php - preg_match_all 在 PHP 中返回 utf-8 的正确偏移量

标签 php regex string utf-8 preg-match-all

我目前正在尝试查找混合字符串(包含日语 utf-8 字符和英语字符)中特定系列字符的位置。我目前像这样拉匹配和偏移:

preg_match_all( $regex, $string, $allmatches, PREG_OFFSET_CAPTURE );    

但是当我的匹配字符串前面有日语字符时,偏移量似乎太大了。

  1. こんいちはabcd 匹配こんばんは
  2. abcdeabcd 匹配 abcde

这两个字符串的偏移量应为 10,但 preg_match_all 返回的数字远高于包含日语字符的字符串的数字。

如何确保所有字符串的偏移量都是标准的?

编辑:对于那些感兴趣的人,我的正则表达式非常基本。只需设置为匹配一系列空格即可: /( +){3}/iu

最佳答案

您必须将/u 修饰符添加到 $regex 以匹配 unicode 字符。

$regex = "/MATCH/u";

参见:Pattern Modifiers

关于php - preg_match_all 在 PHP 中返回 utf-8 的正确偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19178213/

相关文章:

php - 如何捕捉 ZF2 Controller 中的异常?

Java:每个字符出现0-1次的正则表达式

python - 正则表达式:消除斜杠之间的所有数字

c# - 如何将所有转换为一个字符串?

c++ - C/C++ 中的字符串重整

php - 做一个文本变量的数学总和? (例如 5865/100 )

php - 产品 "read more"按钮在 woocommerce 商店中不起作用

c# - 通过比较部分目录路径来匹配子目录

java - split() 方法在 Java 中如何工作?

php - 在PHP/MySQL中插入值时出现外键约束错误