Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish am 18.03.09 15:34

hallo. ich kenne mich nicht mit regulären ausdrücken aus.
folgendes problem: ich möchte den string $text nach dem text "[BILD=X]" durchsuchen, wobei X eine beliebige ganze Zahl ist.
wenn ich den wert von X gerausgefunden habe, möchte ich eine datenbankabfrage mit X starten. letztendlich soll dann "[BILD=X]" durch "<img src="Y" />" ersetzt werden.
wie mache ich sowas, wenn "[BILD=X]" mehrmals in $text vorkommt?

netcup.de Warum gibt es hier Werbung?
Szabo am 18.03.09 15:49

$text = 'sdfdsf [BILD=123] dsfsdf [BILD=456] dfsdfdsf';

if(preg_match_all('#\[BILD=([0-9]+)\]#Ui', $text, $matches)) {
if(isset($matches[1]) && is_array($matches[1]) && 0 < count($matches[1])) {
$result = mysql_query('
SELECT
*
FROM table
WHERE field in ('.implode(',', $matches[1]).')
');

while($row = mysql_fetch_assoc($result)) {
$text = str_replace('[BILD='.$row['x'].']', '<img src="'.$row['y'].'" />', $text);
}
}
}

echo $text;


Vielleicht hilft dir das ganze so ohne weitere Kommentare weiter. Solltest du doch noch fragen haben, einfach laut schreien :-D

Wasili am 18.03.09 15:50

Mithilfe von preg_match_all(). Die Bedienung ist etwas hackelig, genaues lesen der Dokumentation und prüfen der Ergebnisse, wenn man die Funktion nicht kennt, ist empfehlenswert ;)

Edit: Mist, da war wer schneller und genauer. :D

fish fish am 18.03.09 16:25

danke. leicht zu verstehen und funktioniert wunderbar. ich muss diese regulären ausdrücke wirklich mal lernen, die machen vieles einfacher.

der_nic der_nic am 19.03.09 03:33

Quote
Original von fishich muss diese regulären ausdrücke wirklich mal lernen, die machen vieles einfacher.

auf regenechsen.com gibt es ein eifaches und verständliches Tutorial

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt