Php preg_替换为替换功能
如何使用函数作为替换参数使用Php preg_替换为替换功能,php,preg-replace,Php,Preg Replace,如何使用函数作为替换参数使用preg\u 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."'"
preg\u 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
);
函数getInfo($id,$slot){
如果(!$id){return'错误id未返回。请联系support@site.com有关详细信息,“;}
$mm=mysql_查询(“从`users`中选择*,其中`id`=''.$id.“”);
$mma=mysql\u fetch\u assoc($mm);
$p=$mma[$slot];
返回$p;
//return$id;我想您忘记了
e
修饰符(PREG\u REPLACE\u EVAL)在PREG\u REPLACE函数中,需要使用此修饰符将替换字符串作为PHP代码进行求值。它应该是这样的:
$post = preg_replace('~\[CallName\]([^]]+)\[/CallName\]~e', 'getInfo("$1", "fullname")', $post);
有关详细信息,请参见。现在
e
修改器支持
示例用法:
$x = 'abcd-efg-hijk-lmnop';
$x = preg_replace_callback(
'/-(.)/', //pattern
function($matches) { //callback
return strtoupper($matches[1]);
},
$x //subject
);
echo $x; //abcdEfgHijkLmnop
@杰克,我只是偶然发现了这一点,并认为我可能会帮助未来的观众!