Mailinglisten-Archive |
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. Danke, Tim
php::bar PHP Wiki - Listenarchive