[php] prob met info rippen / pagina inlezen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
Hi,

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?

$fd = fread(fopen("1.htm", "r"), 100000);

// de var text is de exacte inhoud van 1.htm
$text = '
<b class="sans">
<a href=http://www.url.com>crush</a>
</b>
<br>
by crushing velvet
(Audio CD
-- December 15, 2002)
<br>
';

$regex = "'<b class=\"sans\">
<a href=(.*?)>(.*?)</a>
</b>
<br>
by (.*?)
\(Audio CD
-- (.*?)\)
<br>'is";

preg_match_all ($regex, $fd, $matches);

for ($i=0; $i< count($matches[0]); $i++) {

    echo "var1: ". $matches[1][$i] ."<br /> \n";
    echo "var2: ". $matches[2][$i] ."<br /> \n";
    echo "var3: ". $matches[3][$i] ."<br /> \n";
    echo "var4: ". $matches[4][$i] ."<br /><br /> \n\n";

}

?>


probleem:
ik heb een html pagina lokaal staan, deze lees ik in en ik probeer daar informatie vanaf te rippen. Maar dit lukt niet, ik krijg immers een lege pagina zonder errors. Als ik de inhoud van die html pagina in een var zet ($text) en deze door de preg_match_all haal werkt het wel.

gebrobeerd:
- gecontroleerd of var fd een waarde heeft, en ja, dit is de correcte waarde.
- de preg_match_all uitvoeren met var text ipv var fd, en dan werkt het wel!

mogelijk probleem:
er is toch iets fout met de var fd.


Heeft iemand een idee waar het probleem ligt, en een werkend alternatief er voor?

Bijvoorbaat dank,
Martin

[edit]
Dit probleem het ik op m'n locale server (PHP: 4.2.3 APACHE: 1.3.27)
Het werkt wel op de server van m'n site (PHP: 4.2.2 APACHE: 1.3.27)

[ Voor 18% gewijzigd door Mark Wegener op 07-01-2003 18:33 ]


Acties:
  • 0 Henk 'm!

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ik zou zeggen, kijk eens wat er in $fd zit?

Acties:
  • 0 Henk 'm!

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 14-09 15:52
" gecontroleerd of var fd een waarde heeft, en ja, dit is de correcte waarde."

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Is het niet toevallig en dos-file (met \r\n line endings) terwijl je het met een unix-host doorzoekt (met \n line endings) of juist net andersom?

Kortom, dat je match dus niet matched omdat de host denkt dat er '\n' of juist '\r\n' moet staan en er eigenlijk het omgekeerde staat?

Dit is, als dat je probleem is, op te lossen door ipv de "enters" in je tekst het volgende op te nemen (\n|\r\n) (waarbij je eventueel nog de haakjes-teller-negatie-operator mee kan geven, dus (:?\n|\r\n) meen ik).

[ Voor 4% gewijzigd door ACM op 07-01-2003 22:38 ]