Webstatt.org - Community seit 2006 - 2012 (2024?)

regex + mysql

Avatar user-180
18.03.2009 14: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?

may the force be with you. but mostly with me.
user-319
18.03.2009 14: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]).'zwinkern
'zwinkern;

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 Fettes Grinsen

user-343
18.03.2009 14: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 zwinkern

Edit: Mist, da war wer schneller und genauer. Fettes Grinsen

Avatar user-180
18.03.2009 15:25

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

may the force be with you. but mostly with me.
Avatar user-162
19.03.2009 02:33

Original von user-180ich muss diese regulären ausdrücke wirklich mal lernen, die machen vieles einfacher.

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

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine