phpbar.de logo

Mailinglisten-Archive

AW: [php] Sorry noch mal RegExp mit Bild-Tags

AW: [php] Sorry noch mal RegExp mit Bild-Tags

Tim Hildebrandt TConnect at gmx.net
Fre Jun 4 13:52:40 CEST 2004


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