>백엔드 개발 >PHP 튜토리얼 >utf8_to_unicode in PHP

utf8_to_unicode in PHP

WBOY
WBOY원래의
2016-06-23 14:36:30972검색

想使用8:UCS2格式编码下行短信的时候,需要把UTF8转换成Unicode的十六进制编码,但是PHP没有内置Unicode的支持,怎么办呢?

/* *
 * 从UTF8转换成unicode beta1.0
 * @param mixed $string要转换的字符串,
 * @return unicode的十六进制编码
*/
function  utf8_to_unicode_hex( $string ){
     $length   =   strlen ( $string );
     $outstring   =   "" ;
     for  (  $i   =   0 ;  $i            $asc_value   =   ord ( $string [ $i ]);
         if ( $asc_value   >   127 ) {
             if ( $asc_value   >=   192   &&   $asc_value                    $str_dec   =  ( ord ( $string [ $i ])  &   0x3f )                   $i ++ ;
                 $str_dec   +=   ord ( $string [ $i ])  &   0x3f ;
                 $str_hex   =   dechex ( $str_dec );
                 $outstring   .=   str_pad ( $str_hex , 4 , " 0 " , STR_PAD_LEFT);
            } elseif ( $asc_value   >=   224   &&   $asc_value                    $str_dec   =  ( ord ( $string [ $i ])  &   0x1f )                   $i ++ ;
                 $str_dec   +=  ( ord ( $string [ $i ])  &   0x3f )                   $i ++ ;
                 $str_dec   +=   ord ( $string [ $i ])  &   0x3f ;
                 $outstring   .= dechex ( $str_dec );
            } elseif ( $asc_value   >=   240   &&   $asc_value                    $str_dec   =  ( ord ( $string [ $i ])  &   0x0f )                   $i ++ ;
                 $str_dec   +=  ( ord ( $string [ $i ])  &   0x3f )                   $i ++ ;
                 $str_dec   +=  ( ord ( $string [ $i ])  &   0x3f )                   $i ++ ;
                 $str_dec   +=   ord ( $string [ $i ])  &   0x3f ;
                 $outstring   .=   dechex ( $str_dec );
            } else {
                 $str_hex   =   dechex ( ord ( $string [ $i ]));
                 $outstring   .=   str_pad ( $str_hex , 4 , " 0 " , STR_PAD_LEFT);
            }
        } else {
             $str_hex   =   dechex ( ord ( $string [ $i ]));
             $outstring   .=   str_pad ( $str_hex , 4 , " 0 " , STR_PAD_LEFT);
        }
    }
     return   $outstring ;
}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP xml to csv다음 기사:PHP Get Current URL