UTF-8 символьные значения в PHP - PullRequest
1 голос
/ 10 января 2012

У меня есть такая строка:

$strUTF8 = 'ABCDAÄ';

Как узнать количество каждого символа и его шестнадцатеричное значение?

Пример:

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

Ответы [ 2 ]

3 голосов
/ 10 января 2012
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";
}
2 голосов
/ 10 января 2012

Если вы проверяете только по 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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...