不推荐使用:preg_replace():/ e修饰符已弃用错误

时间:2014-10-13 06:27:28

标签: php preg-replace preg-replace-callback

嗨,我正在研究wordpress主题并编写一个自定义小部件,它正常工作。但是当我制作wp_debug = true时,它会给出这个错误

不推荐使用:preg_replace():不推荐使用/ e修饰符,而是在....中使用preg_replace_callback。

这是我的preg_replace代码

$status = preg_replace("/((http:\/\/|https:\/\/)[^ )]+)/e", "'<a href=\"$1\" title=\"$1\" $target >'. ((strlen('$1')>=$linkMaxLen ? substr('$1',0,$linkMaxLen).'...':'$1')).'</a>'", $status);

我正在尝试像这样改变它

$status = preg_replace_callback(
                "/((http:\/\/|https:\/\/)[^ )]+)/e",
                function($matches) {
                    return "'<a href=\"$1\" title=\"$1\" $target >'. ((strlen('$1')>=$linkMaxLen ? substr('$1',0,$linkMaxLen).'...':'$1')).'</a>'";
                },
                $status
            );

但它不起作用。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在回调中,将$1替换为$matches[1]

function($matches) {
    return "'<a href=\"$matches[1]\" title=\"$matches[1]\" $target >'
        . (
            ( strlen($matches[1]) >= $linkMaxLen ? 
                  ? substr(matches[1], 0, $linkMaxLen).'...'
                  : matches[1]
            )
          )
        .'</a>'"
},