我正在学习一些预制网站的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 => '< >', ' ' => $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" => ' '));
}
}
任何人都知道可能导致问题的原因是什么?