Mailinglisten-Archive |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am Freitag, 4. Juni 2004 13:52 schrieb Tim Hildebrandt: > Hallo Michael, > > > $pattern = "/<IMG[^>]*id=1[^>]*>/iU"; > > preg_match($pattern, $text, $match); > > var_dump($match); > > </code> > > > > hat das folgende ausgabe ergeben: > > array(1) { > > [0]=> > > string(35) "<IMG id=1 src="datei.jpg" border=0>" > > } > > Das ganze funktioniert hervorragend, wenn man nur das erste Bild > betrachtet. In meinem spezifischen Fall entsteht aber der Fehler, > wenn meine Routine beim zweiten Bild ankommt, da dann das erste Bild > UND der dazwischenliegende Text UND das zweite Bild gematcht werden. > Ich glaube es wird deutlicher, wenn ich Euch zwei Links gebe, die auf > Bilder verweisen. Also: > > Beispiel 1) zeigt ein funktionierendes RegEx angewendet auf das erste > zu findende Bild (hier mit ID 12345): > http://www.pontevecchio.de/regex/beispiel1.gif > > So weit, so gut. Jetzt kommt aber das Problem: > > Beispiel 2) zeigt dieselbe RegEx angewendet auf das Bild mit der ID > 54321. http://www.pontevecchio.de/regex/beispiel2.gif > Ihr seht, dass gleich das Bild 1 im Code mit erwischt wird. Da man > den Leuten ja nicht vorschreiben kann, in welcher Reihenfolge sie die > Bilder in den Quellcode packen (das fällt definitiv unter > künsterische Freiheit), kann ich auch nicht mit Sicherheit > voraussagen, ob der in diesem Beispiel vorkommende Fall (nämlich dass > das System versucht, das Bild mit der ID 54321 zuerst auszutauschen, > weil es gerade so hinkommt) eintritt oder nicht. Im schlimmsten Falle > verliert das System beim Auswechseln des Bildes mit der ID 54321 > gleichzeitig den gesamten Text zwischen Bild1 und Bild2 das Bild1 > ansich! > > Wie also muß ich die (eigentlich funktionierende) RegEx angleichen, > damit immer *genau* von < bis > getroffen wird? Hat das vielleicht etwas mit Greedy und Ungreedy zu tun? Wenn eine RegExp Greedy ist, versucht sie so viele Ergebnisse wir möglich zurückzugeben. durch das .* erlaubst du aber beliebig viele Zeichen, also scannt PHP da bis zum letzten HTML-Tag, oder? Jonas - -- Jonas Schneider eMail JonasSchneider at gmx.de -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQFAwZDfpqpdmWP17qoRAg0zAKCQHEuLVw7ETznFp24iisrUw0YUoQCgkuCl 1D2o7LZcGmdSW9cZKYUrC50= =zlUI -----END PGP SIGNATURE-----
php::bar PHP Wiki - Listenarchive