Как вы используете preg_replace
с функцией в качестве параметра замены? Я получаю сообщение об ошибке с этим кодом.
function getInfo($id,$slot){ if(!$id){ return '<b>Error</b> Id Not Returned. Please contact support@site.com for more information.'; } $mm = mysql_query("SELECT * FROM `users` WHERE `id`='".$id."'"); $mma = mysql_fetch_assoc($mm); $p = $mma[$slot]; return $p; //return $id; <- Debug (Returns ID given) } $post = preg_replace( "/\[CallName]([^]]+)\[\/CallName\]/", getInfo('\\1',"fullname"), $post );
Модификатор теперь устарел в пользу preg_replace_callback .
Использование образца:
$x = 'abcd-efg-hijk-lmnop'; $x = preg_replace_callback( '/-(.)/', //pattern function($matches) { //callback return strtoupper($matches[1]); }, $x //subject ); echo $x; //abcdEfgHijkLmnop
Я думаю, что вы забыли e
модификатор (PREG_REPLACE_EVAL) в функции preg_replace, этот модификатор необходим для оценки строки замены как PHP-кода. Это должно быть так:
$post = preg_replace('~\[CallName\]([^]]+)\[/CallName\]~e', 'getInfo("$1", "fullname")', $post);
Подробнее см. В этом руководстве .