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