Как конвертировать строку в кодовую точку utf-8 в php

Я хочу преобразовать строку как:

alnassre 
will be 0061006c006e00610073007300720065
عربي
will be 063906310628064a
a
will be 0061

используя PHP

как то, что происходит в ссылке http://www.bareedsms.com/tools/UniCodeConverter.aspx

2 ответа

Решение

Я нашел ответ, но он возвращает массив здесь

Я редактирую функцию, чтобы вернуть строку.

function utf8_to_unicode($str) {

    $unicode = array();        
    $values = array();
    $lookingFor = 1;

    for ($i = 0; $i < strlen($str); $i++) {

        $thisValue = ord($str[$i]);

        if ($thisValue < 128) 
            $unicode[] = str_pad(dechex($thisValue), 4, "0", STR_PAD_LEFT);
        else {
            if (count($values) == 0) $lookingFor = ($thisValue < 224) ? 2 : 3;                
            $values[] = $thisValue;                
            if (count($values) == $lookingFor) {
                $number = ($lookingFor == 3) ?
                (($values[0] % 16) * 4096) + (($values[1] % 64) * 64) + ($values[2] % 64):
                (($values[0] % 32) * 64) + ($values[1] % 64);
                $number = strtoupper(dechex($number));
                $unicode[] = str_pad($number, 4, "0", STR_PAD_LEFT);
                $values = array();
                $lookingFor = 1;
            } // if
        } // if
    } // for
    $str="";
    foreach ($unicode as $key => $value) {
        $str .= $value;
    }


    return ($str);   
} // utf8_to_unicode

Я знаю, что вы уже нашли ответ, который работает для вас, но это должно быть:

  1. Намного быстрее

  2. Гораздо проще адаптироваться к другим кодировкам символов.

Это зависит от iconv, но все современные установки PHP имеют это, верно?

 function utf8_to_unicode_codepoints($text) {
     return ''.implode(unpack('H*', iconv("UTF-8", "UCS-4BE", $text)));
 }
Другие вопросы по тегам