preg_replace_callback():要求参数2成为有效的回调

时间:2015-09-10 15:25:38

标签: php

我正在学习一些预制网站的PHP,所以我可以看到它是如何完成的,因为我是一个视觉学习者,但我遇到了一个问题。

我说错误

  

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

现在我知道这是因为一个较新的PHP不支持preg_replace()而是preg_replace_callback(),但在更改它时,我收到此错误:

  

preg_replace_callback():需要参数2,'preg_replace('/(。{59})/','\ $ 1<>','$ 1')',才能成为有效的回调

代码会在聊天框中将消息分成两个单独的消息,以便将所有字母保留在聊天窗口中。

错误位于第20行,其中只有$msg);代表。

if ($shoutbox['fixLongWords'] > 5 && $shoutbox['fixLongWords'] < $shoutbox['maxMsgLenght'])
{
    $non_breaking_space = $context['utf8'] ? ($context['server']['complex_preg_chars'] ? '\x{A0}' : "\xC2\xA0") : '\xA0';

    if ($context['browser']['is_gecko'] || $context['browser']['is_konqueror'])
        $breaker = '<span style="margin:0 -0.5ex 0 0"> </span>';
    elseif ($context['browser']['is_opera'])
        $breaker = '<span style="margin:0 -0.65ex 0 -1px"> </span>';
    else
        $breaker = '<span style="width:0;margin:0 -0.6ex 0 -1px"> </span>';

    $shoutbox['fixLongWords'] = (int) min(1024, $shoutbox['fixLongWords']);

    if (strlen($msg) > $shoutbox['fixLongWords'])
    {
        $msg = strtr($msg, array($breaker => '< >', '&nbsp;' => $context['utf8'] ? "\xC2\xA0" : "\xA0"));
        $msg = preg_replace(
            '~(?<=[>;:!? ' . $non_breaking_space . '\]()]|^)([\w\.]{' . $shoutbox['fixLongWords'] . ',})~e' . ($context['utf8'] ? 'u' : ''),
            'preg_replace(\'/(.{' . ($shoutbox['fixLongWords'] - 1) . '})/' . ($context['utf8'] ? 'u' : '') . '\', \'\\$1< >\', \'$1\')',
            $msg);
        $msg = strtr($msg, array('< >' => $breaker, $context['utf8'] ? "\xC2\xA0" : "\xA0" => '&nbsp;'));
    }
}

任何人都知道可能导致问题的原因是什么?

0 个答案:

没有答案