我有一个这样的字符串:
$strUTF8 = 'ABCDAÄ';
如何获取每个字符及其十六进制值的计数?
示例:
\x41 = 2 [A]
\x42 = 1 [B]
...
\xC3\x84 = 1 [Ä]
答案 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));
}