Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_替换为替换功能_Php_Preg Replace - Fatal编程技术网

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

@杰克,我只是偶然发现了这一点,并认为我可能会帮助未来的观众!