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?
$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
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
danke. leicht zu verstehen und funktioniert wunderbar. ich muss diese regulären ausdrücke wirklich mal lernen, die machen vieles einfacher.
Quote
Original von xyz-70ich muss diese regulären ausdrücke wirklich mal lernen, die machen vieles einfacher.
auf regenechsen.com gibt es ein eifaches und verständliches Tutorial