EDIT: si vous essayez de le remplacer, vous devez utiliser à la place preg_replace_callback()
, comme ceci:
$c = preg_replace_callback('/\[gallery=([0-9]+)\]/', 'gallery', $m);
function gallery($m)
{
$id = (int) $m[1];
$result = mysql_query("select * from `table` where `id` = '$id'");
// Fetch $result and return the appropriate gallery code here
}
Vieille réponse
Vous devriez utiliser preg_match()
pour trouver le match parce que vous n'êtes pas tr ying pour le remplacer par une requête SQL, en obtenant simplement la valeur de la chaîne à utiliser dans la requête SQL. Essayez ceci:
$m = array();
preg_match('/\[gallery=([0-9]+)\]/', $content, $m);
$id = (int) $m[1]; // The value of the backreference $1
gallery($id);
Je crois aussi votre fonction gallery()
doit retourner mysql_query()
afin que vous puissiez analyser l'ensemble des résultats de la requête:
function gallery($id)
{
return mysql_query("select * from `table` where `id` = '$id'");
}
+1, preg_replace_callback() devrait répondre à vos besoins – SW4
j'ai oublié cette fonction :(Super, merci mach :) – Simon