#php #preg-replace
#php #preg-заменить
Вопрос:
Как вы используете 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
);
Ответ №1:
e
Модификатор теперь устарел в пользу 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
Комментарии:
1. @Jake Я просто случайно наткнулся на это и подумал, что мог бы помочь будущим зрителям!
Ответ №2:
Я думаю, вы забыли e
модификатор (PREG_REPLACE_EVAL) в функции preg_replace, этот модификатор необходим для оценки строки замены как PHP-кода. Это должно быть так:
$post = preg_replace('~[CallName]([^]] )[/CallName]~e', 'getInfo("$1", "fullname")', $post);
Смотрите это руководство для получения подробной информации.