我正在尝试为一个非常老的博客更新一些非常老的插件的代码。除此以外,我几乎修复了所有问题。
我收到一条错误消息,必须将preg_replace替换为preg_replace_callback。
这是代码:
$source_content = preg_replace($search.'e', "'"
. $this->_quote_replace($this->left_delimiter) . 'php'
. "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
. $this->_quote_replace($this->right_delimiter)
. "'"
, $source_content);
如果我只是将preg_replace_callback替换为preg_replace,则会出现此错误:
preg_replace_callback(): Requires argument 2, ''{{php' . str_repeat(" ", substr_count('\0', " ")) .'}}'', to be a valid callback in
我既不是Perl也不是PHP的人。任何帮助将不胜感激!
将您的smarty库升级到最新的smarty2可以解决您已有的5年以上的问题。
但是这可能会帮助您:
$source_content = preg_replace_callback($search . 'e',
function ($matches) {
return "'"
. $this->_quote_replace($this->left_delimiter) . 'php'
. "' . str_repeat(\"\n\", substr_count('$matches[0]', \"\n\")) .'"
. $this->_quote_replace($this->right_delimiter) . "'";
},
$source_content
);
这里是说明,还有更多示例:https://www.php.net/manual/en/function.preg-replace-callback.php