【发布时间】:2014-07-23 18:41:12
【问题描述】:
我收到以下错误消息:
Warning: Unexpected character in input: '\' (ASCII=92) state=1
这就是给我带来麻烦的代码行。
$tag_value = preg_replace('/\{(.*?)\}/e', '$values[\\1]', $tag_value);
我使用的是 PHP 5.2.9,无法升级。
正则表达式不是我的专长,我无法自己解决这个问题。任何帮助将不胜感激。
【问题讨论】:
-
@krishna:
\\1不是错字。它指的是第一个反向引用。结合e修饰符,这将导致\\1被替换为正则表达式中第一个捕获组中捕获的内容,即{...}之间的内容。替换参数需要更改为'$values["\\1"]'(否则,它很可能会抱怨未定义的常量)。 -
@AmalMurali 哦,抱歉信息有误,感谢您提供信息..
-
看起来这与命名空间有关。见this demo。我不认为
preg_replace()是导致此错误的原因。