Andreas Dölling: Problem mit preg_replace und mysql_query

Beitrag lesen

Hallo,

ich habe einen Text mit "[link=76,param=43]" welcher ersetzt werden soll , und zwar mit einem Text aus einer Datenbank!

ah, also andersherum, als ich es verstanden hatte (und als Du es oben erklärt hattest).

Dann versuche es doch so:

// 1.: die ID aus dem Text holen
preg_match('@[link=([^"]+),param=([^"]+)]@si', $text, $matches);

// 2.: zu der ID den Namen aus der DB holen
$sql = "SELECT name FROM test WHERE id='".$matches[0]."'"
$result = mysql_query($sql);
$dataset = mysql_fetch_assoc($result);

// 3.: die ID im Text durch den Namen ersetzen
$text = preg_replace('@[link=([^"]+),param=([^"]+)]@si', $dataset['name'], $text);

Mir kommt das zwar alles ein bißchen schwurbelig vor - aber ich kenne den Kontext Deines Problems nicht. Es sollte so jedenfalls klappen.
(Alternativ könntest Du tatsächlich, wie ein anderer User ja schon vorschlug, mit preg_replace_callback() arbeiten.)

Ciao,
Andreas

--
"Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)