我需要获取一个包含单词中所有字符的数组,但是当我执行以下代码时,单词中的字母具有特殊编码,例如 á:
$word = 'withá';
$word_arr = array();
for ($i=0;$i<strlen($word);$i++) {
$word_arr[] = $word[$i];
}
或
$word_arr = str_split($word);
我得到:
array(6) { [0]=> string(1) "w" [1]=> string(1) "i" [2]=> string(1) "t" [3]=> string(1) "h" [4]=> string(1) "Ã" [5]=> string(1) "¡" }
如何获取如下每个字符?
array(5) { [0]=> string(1) "w" [1]=> string(1) "i" [2]=> string(1) "t" [3]=> string(1) "h" [4]=> string(1) "á" }
最佳答案
因为是UTF-8字符串,所以就做
$word = 'withá';
$word = utf8_decode($word);
$word_arr = array();
for ($i=0;$i<strlen($word);$i++) {
$word_arr[] = $word[$i];
}
这样做的原因是,即使它在您的脚本中看起来是正确的,解释器也会将其转换为多字节字符(为什么 mb_split()
也能正常工作)。要将其转换为正确的 UTF-8 格式,您可以使用 mb 函数或仅指定 utf8_decode()
。
关于php - 如何从具有特殊编码的单词中获取每个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501772/