Mailinglisten-Archive |
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? Danke noch mal für Eure Mühen. Gruß Tim
php::bar PHP Wiki - Listenarchive