如何从具有特殊编码的单词中获取每个字符

let*_*cia 8 php encoding character-encoding tokenize

我需要从一个单词中获取包含所有字符的数组,但是当我执行以下代码时,单词具有特殊编码的字母,如á.

$word = 'withá';

$word_arr = array();
for ($i=0;$i<strlen($word);$i++) {
    $word_arr[] = $word[$i];
}
Run Code Online (Sandbox Code Playgroud)

要么

$word_arr = str_split($word);
Run Code Online (Sandbox Code Playgroud)

我明白了:

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)"á"}

Tim*_*ers 3

因为它是一个UTF-8字符串,所以只需这样做

\n\n
$word = 'with\xc3\xa1';\n$word = utf8_decode($word);\n$word_arr = array();\nfor ($i=0;$i<strlen($word);$i++) {\n    $word_arr[] = $word[$i];\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

原因是,即使它在脚本中看起来正确,解释器也会将其转换为多字节字符(为什么mb_split()也有效)。要将其转换为正确的 UTF-8 格式,您可以使用 mb 函数或仅指定utf8_decode().

\n