我有一堆具有不同字符集的字符串。这$charset
变量包含当前字符串的字符集。
$content = iconv($charset, 'UTF-8', $content);
完成后,使用是否安全strpos
, strlen
, substr
等等而不是它们的多字节等效项?我问这个是因为我使用preg_match
也有很多。所以如果我使用PREG_OFFSET_CAPTURE
要获取字符串中单词的位置,我不能使用该值mb_substr
删除该单词之前的所有内容。
这完全取决于你想做什么。核心strlen
和类似的功能适用于bytes。它们接受和返回的每个数字都是字节计数或字节偏移量。 mb_* 函数可识别编码人物。它们接受和返回的所有数字都是字符计数或偏移量。
如果您有一种安全的方法来获取字符串中的字节偏移量(“安全”意味着偏移量不在多字节字符的中间),然后,例如,使用以下命令裁剪该偏移量之前的所有内容substr
,这样就可以了。例如:
$str = '漢字';
$offset = strpos($str, '字');
$cropped = substr($str, $offset);
工作正常。
但是,这行不通:
$cropped = substr($str, $offset, 1);
你无法安全地剪掉一个byte无需冒切入多字节字符的风险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)