PHP中的UTF-8 char值

时间:2012-01-10 12:38:14

标签: php utf-8

我有一个这样的字符串:

$strUTF8 = 'ABCDAÄ';

如何获取每个字符及其十六进制值的计数?

示例:

\x41 = 2 [A]
\x42 = 1 [B]
...
\xC3\x84 = 1 [Ä]

2 个答案:

答案 0 :(得分:3)

for($i = 0, $n = mb_strlen($strUTF8); $i < $n; $i++) {
    $mbchar = mb_substr($strUTF8, $i, 1);
    $numChars = strlen($mbchar);
    for($j = 0; $j < $numChars; $j++) {
        printf('%02x', ord($mbchar[$j]));
    }
    echo "\n";
}

答案 1 :(得分:2)

如果您只是针对UTF-8进行检查,则可以使用mb_strlen

http://www.php.net/manual/de/function.mb-strlen.php

$strUTF8 = 'ABCDAÄ';
var_dump(mb_strlen($strUTF8, 'UTF-8')); // 6

要获取角色的所有序数值,请遍历字符串并使用mb_substr打印字符。

$strUTF8 = 'ABCDAÄ';
$len = mb_strlen($strUTF8, 'UTF-8');

for ($i = 0; $i < $len; $i++) {
    $chr = mb_substr($strUTF8, $i, 1, 'UTF-8');
    var_dump($chr, ord($chr));
}