preg_match_all in PHP4 und PHP5 verschieden?

Hallo

Ich benutze folgende funktion um aus einem file roomid auszulesen:

PHP-Code:

function list\_room($filename)
{
 $datei = fopen($filename,"r");
 if (preg\_match\_all("/[0-9]+/s",file\_get\_contents($filename),$xml,PREG\_PATTERN\_ORDER))
 {
 print\_r($xml);

 }

 $countNr=count($xml, COUNT\_RECURSIVE);
 echo $countNr;

 fclose($datei);

Jetzt hab ich folgendes festgestellt:
Lass ich das ganze auf nem PHP 4 Webserver ablaufen wird das array korrekt angezeigt (5 werte)
Auf nem PHP 5 Webserver werden nur 4 Werte angezeigt (das letzte Element wird anscheinend nicht eingelesen.

Hat jemand eine Idee woran das liegen könnte?

Hallo

Ich benutze folgende funktion um aus einem file roomid
auszulesen:

PHP-Code:

function list_room($filename)

Hat jemand eine Idee woran das liegen könnte?

Nur wenn Du verrätst, was sich hinter $filename
verbirgt. Was steht im File denn drin?

Grüße

CMБ

Hallo

Hinter $filename verbirgt sich ein xml-file das woanders erzeugt wird.
dort stehen allerhand daten u.a. 123456 und das 5x

gruss Jens

Hallo

Hinter $filename verbirgt sich ein xml-file das woanders
erzeugt wird.
dort stehen allerhand daten u.a.
123456 und das 5x

Aha. Dann wird es sicher an irgendetwas liegen,
was wir hier nicht sehen. Versuch mal eine
verbesserte Variante Deiner Funktion zu nehmen,
was passiert denn dann?

function list_room($filename)
{
$xmldata = file_get_contents($filename);
if(preg_match_all(’/\d+/’, $xmldata, $matches)) {
print_r($matches[0]);
}
echo $countNr = count($matches[0]);
}

Was soll denn rauskommen?

Grüße

CMБ

Okay probier ich mal.

Das eigentliche Problem ist ja dass es unter php4 einwandfrei funktioniert und unter php 5 dieselbe funktion das letzte element unterschlägt.

das is ja was mich verwirrt :smile:

Nichtsdestotrotz werde ich mal die mdoifizierung probieren.

es soll heruskommen, dass aus allerhand xml-elementen nur die roomid extrahiert wird. Problem ist das die erzeugte xml-datei auch ein Haufen leerer produziert, wo mir simplexml_load_file einen parser fehler nach dem anderen bringt und ich nun versuche per RegEx das benötigte herauszubekommen :wink:

letztlich passiert auch mit deiner modifizierten Funktion das Gleiche wie mit meiner:

PHP 5:

Array ( [0] =\> 11456 [1] =\> 11457 [2] =\> 11452 [3] =\> 11453 ) 4 

PHP 4:

Array ( [0] =\> 11456 [1] =\> 11457 [2] =\> 11452 [3] =\> 11453 [4] =\> 11455 ) 5

ich werd einfach net schlau draus…

Hallo

letztlich passiert auch mit deiner modifizierten Funktion das
Gleiche wie mit meiner:

ich werd einfach net schlau draus…

OK, dann müßte man die Eingabedatei *komplett*
kennen um das weiter zu verfolgen.

Kannst Du die als Zip irgendwo hinterlegen,
für ein Stündchen. Ich schau mal rein.

Grüße

CMБ

Hab dir mal ne mail geschrieben :smile:

Hallo

ich werd einfach net schlau draus…

Dein XML liefert unter meinem PHP (5.2.6)
das korrekte Resultat (5). Auch die Wandlung
des xml nach utf8 ändert daran nichts.

Es könnte also ein Bug in der von Dir
verwendeten PHP-Version (bzw. der darunter-
liegenden libpcre sein. Welche Version
verwendest Du?

Grüße

CMБ

PHP Version 5.2.5
PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 7.3 2007-08-28

bzw.

PHP Version 5.2.0-8+etch11

PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 6.7.7.4 2008-02-18

hier gehts jeweils net (fehlt das letzte element)

Hier gehts:
PHP Version 4.4.4-8+etch6
PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 6.7.7.4 2008-02-18

Hallo Jens,

[geht nicht auf …]

PHP Version 5.2.5
PCRE Library Version 7.3 2007-08-28

PHP Version 5.2.0-8+etch11
PCRE Library Version 6.7.7.4 2008-02-18

Ich hab mal die mir zur Verfügung stehenden PHP’s
ausprobiert, alle „gingen“.

PHP 5.2.5 with Suhosin-Patch 0.9.6.2
Zend Engine v2.2.0, Copyright © 1998-2007 Zend Technologies

==> geht (=> 5)

PHP 5.0.4 (cli) (built: Jul 30 2007 15:13:12)
Zend Engine v2.0.4-dev, Copyright © 1998-2004 Zend Technologies

==> geht (=> 5)

PHP 5.2.6 with Suhosin-Patch 0.9.6.2 (cli)
Zend Engine v2.2.0, Copyright © 1998-2008 Zend Technologies
with Suhosin v0.9.23, Copyright © 2007, by SektionEins GmbH

==> geht (=> 5)

Ich weiß da auch keinen Rat mehr.

Grüße

CMБ

mal eine frage ???

was ist den nun die richtige lösung ???

php4 mit 4 lösungen oder php5 mit 5 lösungen
oder php5 mit 4 lösungen oder php4 mit 5 lösungen.

immoment wiederspricht sich der ganze thread.

und wie sieht das gesammte array aus. (zur fehleranalyse)

print_r ??