为什么在这个函数中preg_替换_回调从不触发?

时间:2010-11-04 作者:Scott B

在下面的函数中,save\\u content函数运行,但doReplace不运行(echo

“这是doReplace”从未出现过。知道为什么吗?

add_action(\'content_save_pre\', \'save_content\');

 function save_content($content){
  global $post;
  $mykeyword = rseo_getKeyword($post);
  $mykeyword = preg_quote($mykeyword, \'/\');
  $content = preg_replace_callback("/\\b($mykeyword)\\b/i","doReplace", $content);
 return $content;
 }

 function doReplace($matches)
 {
  echo "This is the doReplace";
  die;
  }

2 个回复
最合适的回答,由SO网友:t31os 整理而成

函数需要返回数据,而不是回显数据。。

function doReplace($matches) {
    return "This is the doReplace";
}
希望这有帮助。。

SO网友:Denis de Bernardy

preg\\u quote()调用不应该在数组映射调用中使用吗?如果你给它喂食类似“foo | bar”的食物,它会以“foo | bar”的形式逃逸,这与任何东西都不匹配。。。最好使用以下内容:

// uncomment in case you\'re returning a string:
// $kw = explode(\'|\', $kw);
// create a new function if php 5.3 is not an option
$regex = array_map(function($in) {
  return preg_quote($in, \'/\');
}, $kw);
$regex = implode(\'|\', $regex);

结束

相关推荐