我正在写一些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处太大
答案 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]);