Neuigkeiten:

still alive...

Hauptmenü

Hilfe zu preg_match_all / preg_replace

Begonnen von puchne, 29. Juni 2006, 08:21:36

Vorheriges Thema - Nächstes Thema

puchne

Hallo,
ich bräuchte dringend Hilfe zu regulären Ausdrücken.
Folgende Situation:
In einem Text sollen \"zahl\" ersetzt werden durch ein bestimmtes Bild aus einer Bilderdatenbank (mit der id=zahl).
Bisher bin ich nur soweit gekommen, dass das erste Bild durch den richtigen HTML-code ersetzt wird und alle weiteren \"xy\" durch dasselbe Bild ersetzt werden statt mit den darauf folgenden Bildern.
Also statt
\"3\"
\"14\" etc.
ersetzt er mir für \"14\" auch \"3\" usw.
folgender Versuch:


\",$eintrag);
}
}
?>

 
 
Wär klasse wenn mir da jemand weiterhelfen könnte!
http://www.licht-malerei.de\" rel=\"external nofollow\">»private Foto-Webseite



dec

zeile 5, vor dem trefferX fehlt z.b. das dollarzeichen $...

spass ist, was ihr draus macht


puchne


Original von DEC zeile 5, vor dem trefferX fehlt z.b. das dollarzeichen $...
[/quote]
falsch rauskopiert ... daran liegt es nicht.
Wie gesagt, er ersetzt ja \"richtig\" ... nur halt immer alle mit den Daten (der id) aus dem ersten Eintrag
http://www.licht-malerei.de\" rel=\"external nofollow\">»private Foto-Webseite



dec

vielleicht stimmt was mit den schlüsseln nicht...
schon mit $treffer[$i][2] probiert? werde beim php-manual nicht ganz schlau draus, was den nun in den treffer-arrays so gespeichert wird /uploads/emoticons/icon_e_wink.gif.fcb053ab2c91cb6224c03a16c6332abf.gif\" alt=\";)\" />
am besten mal print_r($treffer) zwischenschalten (vor der schleife), dann siehste was rauskommt und warum es nicht geht...

spass ist, was ihr draus macht


mahe

hmmm, dir ist aber bewußt dass dieser Code-Teil eine Performancebremse darstellt?
Pro Bild ein Query, das kann ganz leicht danz viel werden.
Jedesmal in der for() count($treffer[0]), solange $treffer[0] nicht in der Schleife geändert wird ist das eigentlich nicht notwendig (und selbst da gäbe es noch andere Lösungen)
Ich würde dir zu folgendem raten:
ein preg_replace mit dem Modifiern esiU
im replace-Teil eine Funktion aufrufen, zB get_pic()


in der Funktion get_pic() liest du einmal alle Bilder in ein Array ein, der Key des Arrays ist die ID des Bildes.als Rückgabe lieferst du den Dateinamen des Bildes /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
\';
}
?>


Statt $pic[\'dateiname\'] kannst du natürlich die URL zum Bild nehmen /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
Du liest dann zwar einmal alle Bilder aus und schreibst sie in ein Array, das ist aber bei mehr Bildern sicher noch immer schneller als ein Query pro angezeigtem Bild /uploads/emoticons/icon_e_smile.gif.f7ec63a2b1c3d90a9415e40455642502.gif\" alt=\":-)\" />

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


all your base are belong to us / Discord