警告:输入中出现意外字符:'\'(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
不是正确的东西放在括号内。
上一篇: Warning: Unexpected character in input: '\' (ASCII=92) state=1