对于utf8字符串,我需要一个charAt函数。
如果我这样编码,它可以工作,但是它太慢了,因为它必须处理很长的字符串。
public static function utf8_charAt($str, $num)
{
return mb_substr($str, $num, 1, 'UTF-8');
}
因此,在谷歌搜索了一下之后,我找到了一个可能更快的替代方法。
public static function utf8_charAt($str, $num)
{
$split = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
return $split[$num];
}
现在奇怪的部分:
在某些字符串上,preg_split函数仅返回一个数组,其中整个输入字符串为唯一项。
调试时如下所示:
屏幕截图中的输入字符串:
陘⊇7觬ࠒ肃⠈秀菂о 舏ꁀ車ń၀ꂀᒂƨ࠺텀脼舁㳸⁀态丌였ᯠ₀胸耉ᠷ䠠켠脳䄁︀Ȍרࠃ䰀⛠眰䀻₁ᙁƓȃ씄ࠖࠐ∘‘絠臱섁봂ف̘ஜနᠠ⬠㲀◁ö舄씄ֺࠊ䰐┸–䁀䢀肛脁菁±聵䄁ì섁持ũ䄀솁ā䝁ù脁龁ƴ䄁쒁상䌁䅁č脁ꒁEĀ餁K脁獁ǒ脁᳁ğ肝Ź섁䤁ųĀࣁ䄀薁Ġ脀鍁āĀ䪁Ŭ섁ꃁa섀佁Ǿ䄁㭀7©䄀鳁댁䄁}䄁굁Ǭ脀ぁĦ脀剁䄀❁Ŵ老欀沁{耀ꬁ䷁į䄀锁
我还没有看到任何连贯性,但是在某些字符串上它可以按预期工作。不幸的是,这些最少。