preg_match():编译失败:\ x {}或\ o {}中的字符值在第25行的偏移27处太大

时间:2015-09-03 12:23:34

标签: php regex preg-match

我正在写一些PHP代码。在这段代码中,我在for循环中运行for循环来迭代数组,然后迭代数组中当前字符串中的字符。

然后我想对当前字符串执行preg_match()以查看它是否与一个相当灵活的RegEx匹配。

preg_match('/[ \f\n\r\t\v\x{00a0}\x{1680}\x{180e}\x{2000-}\x{200a}\x{2028}\x{2029}\x{202f}\x{205f}\x{3000}\x{feff}]/', $input[$i][$j])

但我继续收到以下错误:

  

警告preg_match():编译失败:\ x {}或中的字符值   \ o {}在第25行的偏移27处太大

1 个答案:

答案 0 :(得分:21)

添加UTF-8解析,您不处于UFT8模式。添加u参数。

preg_match('/[ \f\n\r\t\v\x{00a0}\x{1680}\x{180e}\x{2000-}\x{200a}\x{2028}\x{2029}\x{202f}\x{205f}\x{3000}\x{feff}]/u', $input[$i][$j]);

此外,我还要强调你有一个错字。 \x{2000-}应为\x{2000}\x{2000}-

preg_match('/[ \f\n\r\t\v\x{00a0}\x{1680}\x{180e}\x{2000}\x{200a}\x{2028}\x{2029}\x{202f}\x{205f}\x{3000}\x{feff}]/u', $input[$i][$j]);