phpbar.de logo

Mailinglisten-Archive

[php] Sorry noch mal RegExp mit Bild-Tags

[php] Sorry noch mal RegExp mit Bild-Tags

Sebastian Mendel lists at sebastianmendel.de
Fre Jun 4 12:57:04 CEST 2004


Tim Hildebrandt schrieb:

> Hallo liebe Liste,
> 
> leider haben die bisher angebotenen Verfahren nicht korrekt gearbeitet,
> daher stelle ich noch mal mein momentanes Problem hier rein in der Hoffnung,
> dass sich ein RegExp-Guru meiner erbarmt:
> 
> Ich habe einen HTML-Text mit IMG-Tags. Dieser Text ist irgendwie geartet,
> mal lang, mal kurz aber mit ziemlich hoher Wahrscheinlichkeit auch mit
> anderen Tags wie <b> oder <br>. In diesem Text befinden sich IMG-Tags, die
> druch die ID-Eigenschaft eindeutig werden. Hier ein Beispiel:
> 
> ----------------------------------------------------------------
> S nam magus de permetior, <b>arx</b> ars Cito Crucio reduco pax 
> progenierum ejulo, alarius lex gestum, saepio una pars 
> hio diu Latro cui quod summittere suppellex Suavis 
> perlustro. <IMG id=1 src="datei.jpg" border=0> Nam Devotio reddo 
> vi <IMG id=2 src="datei.jpg" border=0>specialissimus cum aut 
> prodico curo Hospitium Diu fragro Quin <p>honestas res ut 
> hos Abstergo Cupido</p> hic Discerpo. uro obnubilo 
> <b>jus roto sis pulmo sollers.</b>
> ----------------------------------------------------------------
> 
> Beim Speichern dieses Textes ist aus einer Datenbank-Abfrage bekannt, welche
> Bild-ID's sich im Text befinden müssen. Ich muß also nicht mehr rätseln oder
> nach irgendwelchen TAG's suchen, die _irgendeine_ ID haben, sondern ich
> könnte jetzt eigentlich gezielt austauschen. Wenn ich das korrekte
> Suchmuster hätte. Problematisch ist, dass nach der SRC-Eigenschaft noch
> beliebig andere Eigenschaften stehen können, so z.B. border, align etc. Ich
> betrachte jetzt mal nur die erste Zeile in der Rückgabe meiner SQL-Query, in
> der die ID = 1 ist:
> 
> Aus der DB setze ich $bild_id = 1
> 
> $pattern = "/<IMG[^>](.*?)" . $bild_id . "(.*?)>/miU";
> $variabel = "<!--bid=" . $bild_id . "-->";
> 
> Im Worten: Suche alles, was mit <IMG anfängt, dann irgendwie (nur nicht mit
> 
>>) weitergeht, dann eine (aus der DB bekannte) ID enthält, dann wieder
> 
> irgendwie weitergeht und schließlich mit einem > endet.
> 
> 
> Wenn ich diese Pattern mal mit preg_match($pattern, &text, $match) aufrufe,
> erhalte ich folgende Array-Werte:
> 
> $match[0]: <IMG id=1 src="datei.jpg" border=0> Nam Devotio reddo 
> vi <IMG id=2 src="datei.jpg" border=0>
> 
> $match[1]: id=
> 
> $match[2]: src="datei.jpg" border=0> Nam Devotio reddo 
> vi <IMG id=2 src="datei.jpg" border=0
> 
> 
> Da ich ja die Datenbank-Tabelle durchlaufe und pro Zeile immer nur genau
> eine Bild-ID matchen möchte, würde ich also eigentlich immer nur $match[0] =
> "<IMG id=2 src="datei.jpg" border=0>"; erwarten, wobei die ID im jeweiligen
> Fall die ID ist, die ich aus der Tabelle auslese.
> 
> 
> Wie bekomme ich das hin? Meine Versuche schlagen ständig fehl, obwohl ich
> nun schon recht viel in Tutorials recherchiert habe.

was war daran falsch:

Sebastian Mendel schrieb:

 > $pattern = "/<img[^>]+id=\"" . $bildid . "\"[^>]*>/siU";




-- 
Sebastian Mendel (www.sebastianmendel.de)

*www.warzonez.de* | www.tekkno4u.de | www.nofetish.com

php::bar PHP Wiki   -   Listenarchive