0

为什么这会返回原始字符串而不是编辑后的字符串?

原始字符串:

I cant believe Ed ate [-food-] for breakfast.

代替:

preg_replace_callback('/\[\-[a-zA-Z0-9_]\-\]/', 'tag_func', $email_body);

function tag_func($matches){
     $matches[0] = 'tacos';
     return $matches[0];
}

结果所需的字符串:

I cant believe Ed ate tacos for breakfast.

这是我收到的警告:

preg_replace_callback(): Requires argument 2, 'tag_func', to be a valid callback 
4

1 回答 1

1

您忘记添加 a +,以便它应该匹配多个字符:

preg_replace_callback('/\[-[a-z\d_]+-\]/i', 'tag_func', $email_body);
//                                 ^

在此处查看实际操作:http ://codepad.viper-7.com/f94VPy


如果你运行的是 5.3,你可以直接给它传递一个匿名函数:

preg_replace_callback('/\[-[a-z\d_]+-\]/i', function () {
    return 'tacos';
}, $email_body);

这是演示:http ://codepad.viper-7.com/NGBAIh

于 2013-02-01T18:51:36.323 回答