首页 > 后端开发 > php教程 > 如何在`preg_match()`之前正确获取多字节字符计数?

如何在`preg_match()`之前正确获取多字节字符计数?

Susan Sarandon
发布: 2024-12-08 09:11:15
原创
752 人浏览过

How to Correctly Get Multibyte Character Count Before a `preg_match()`?

使用 preg_match() 获取匹配前的多字节字符计数(PREG_OFFSET_CAPTURE 参数无助于计算字节)

在 UTF-8 编码的字符串中,preg_match使用 () 时,可能会报告捕获的匹配项中不正确的字符偏移量PREG_OFFSET_CAPTURE 参数。原因是捕获的偏移量以字节为单位计算,即使主题字符串被解释为带有“u”修饰符的 UTF-8。

解决方案:

要获取 UTF-8 捕获的匹配中的正确字符偏移量,请使用 mb_strlen 根据 UTF-8 字节计算字符计数偏移量:

$str = "\xC2\xA1Hola!";
preg_match('/H/u', $str, $a_matches, PREG_OFFSET_CAPTURE);
echo mb_strlen(substr($str, 0, $a_matches[0][1]));
登录后复制

以上是如何在`preg_match()`之前正确获取多字节字符计数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板