Willkommen in der Webstatt
User-1 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?
User-2 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

User-3 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

User-1 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.

User-4 am 19.03.09 03:33

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

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

Impressum & Kontakt