Mailinglisten-Archive |
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