有人可以向我解释为什么这个函数不会返回用户标记的id?
function userid($name){
$a_sql = mysql_query("SELECT * FROM utenti WHERE tag='$name' ") or die( mysql_error());
$a_id= mysql_result($a_sql ,0,"id");
return $a_id;
}
$text= $_POST["text"];
$text = preg_replace('/@([a-zA-Z0-9]+)/e', htmlspecialchars(userid('$1')), $text);
为什么这种方法不起作用?
答案 0 :(得分:1)
而不是使用preg_replace()
使用preg_replace_callback()
http://php.net/manual/en/function.preg-replace-callback.php
这允许您传递 replacement 参数通常所在的函数。
作为旁注,请不要使用已弃用的mysql_*
函数。请将MySQLi or PDO替换为预备语句。
答案 1 :(得分:1)
你需要引用整个第二个参数来评估结果为php:
$text = preg_replace('/@([a-zA-Z0-9]+)/e', 'htmlspecialchars(userid($1))', $text);
您正在做的是调用函数htmlspecialchars
和userid
并将结果提供给preg_replace
。