preg_replace vs preg_replace_callback

问题描述 投票:0回答:1

我正在尝试为一个非常老的博客更新一些非常老的插件的代码。除此以外,我几乎修复了所有问题。

我收到一条错误消息,必须将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的人。任何帮助将不胜感激!

php
1个回答
0
投票

将您的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

© www.soinside.com 2019 - 2024. All rights reserved.