php漢字をバイナリ10進数16進数に変換

2025 ワード

<?php
/**
 *        unicode     ,      ,        ,    
 *   :               utf-8  ,        
 *                ,        ,     PHP      
 * @author xieye
 *
 * @param {string} $word        ,          ( str_split   )
 * @return {string}      unicode , 4f60,     “ ”
 *
 * @example
    echo "  ".getUnicodeFromOneUTF8(" ");
    echo "<br />";
    echo "  ".getUnicodeFromOneUTF8(" ");
    echo "<br />";
    echo "   ".getUnicodeFromOneUTF8("  ");
    echo "<br />";
    echo "    ".getUnicodeFromOneUTF8("   ");
      20320
      22909
       251503099357000
        4.21952182258E+21
 */
function getUnicodeFromOneUTF8($word) {
    //            ,       utf-8  !
    if (is_array( $word))
        $arr = $word;
    else
        $arr = str_split($word);
    //  ,$arr   array(228, 189, 160)
    //          
    $bin_str = '';
    //             ,      。
    foreach ($arr as $value)
        $bin_str .= decbin(ord($value));
    //  ,$bin_str   111001001011110110100000,     " "
    //    
    $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);
    
    //  , $bin_str   0100111101100000,     " "
    return bindec($bin_str);
    //    20320,   " "
    //return dechex(bindec($bin_str));
    //        4f60,   
}
echo "  ".getUnicodeFromOneUTF8(" ");
echo "<br />";
echo "  ".getUnicodeFromOneUTF8(" ");
echo "<br />";
echo "   ".getUnicodeFromOneUTF8("  ");
echo "<br />";
echo "    ".getUnicodeFromOneUTF8("   ");
exit;

?>