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

2022-08-31 00:38:32

我正在编写一些PHP代码。在此代码中,我在 for 循环中运行 for 循环以循环访问数组,然后循环访问数组中当前字符串中的字符。

然后,我想在当前字符串上执行preg_match(),以查看它是否与相当灵巧的正则表达式匹配。

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{} 中的字符值在偏移量 27 处第 25 行


答案 1

添加 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]);

答案 2

推荐