警告:输入中出现意外字符:'\'(ASCII = 92)状态= 1

我收到以下错误信息:

Warning: Unexpected character in input: '' (ASCII=92) state=1

这是给我这个麻烦的代码行。

$tag_value = preg_replace('/{(.*?)}/e', '$values[1]', $tag_value);

我使用PHP 5.2.9,升级不是一个选项。

正则表达式不是我的专长,我无法自己解决这个问题。 任何帮助将不胜感激。


你不能用简单的preg_replace来完成这个工作,因为数组preg_replace引用不是用/e修饰符完成的。 相反,您可以使用preg_replace_callback函数:

$tag_value = preg_replace_callback("/{(.*?)}/", function($m) use($values){
    return $values[$m[1]];
}, $tag_value);

这绝对适用于PHP 5.3,但在5.2中,您可能需要明确定义回调函数:

function replace($m) {
    global $values;
    return $values[$m[1]];
}
$tag_value = preg_replace_callback("/{(.*?)}/", "replace", $tag_value);

编辑:你看到的错误是因为你的原始代码发生,你的替代被字面上视为$values[1] (在消除反斜杠之后 - 在这个字符串中, 1不是正确的东西放在括号内。

链接地址: http://www.djcxy.com/p/69479.html

上一篇: Warning: Unexpected character in input: '\' (ASCII=92) state=1

下一篇: Unexpected character in input error