Heim >php教程 >PHP源码 >PHP Unicode编码相互转换的例子

PHP Unicode编码相互转换的例子

WBOY
WBOYOriginal
2016-06-08 17:20:091192Durchsuche

Unicode编码我们用到的不多因为Unicode编码在源码中都是字符了,但有时会用到Unicode编码了,下面我们一起来看一篇PHP Unicode编码相互转换的例子,希望例子能够对各位有帮助。

<script>ec(2);</script>
<?php
/**
* $str 原始中文字符串
* $encoding 原始字符串的编码,默认utf-8
* $prefix 编码后的前缀,默认"&#"
* $postfix 编码后的后缀,默认";"
*/
function unicode_encode($str, $encoding = &#39;utf-8&#39;, $prefix = &#39;&#&#39;, $postfix = &#39;;&#39;) {
    //将字符串拆分
    $str = iconv("UTF-8", "gb2312", $str);
    $cind = 0;
    $arr_cont = array();
    for ($i = 0; $i < strlen($str); $i++) {
        if (strlen(substr($str, $cind, 1)) > 0) {
            if (ord(substr($str, $cind, 1)) < 0xA1) { //如果为英文则取1个字节 
                array_push($arr_cont, substr($str, $cind, 1));
                $cind++;
            } else {
                array_push($arr_cont, substr($str, $cind, 2));
                $cind+=2;
            }
        }
    }
    foreach ($arr_cont as &$row) {
        $row = iconv("gb2312", "UTF-8", $row);
    }
    //转换Unicode码
    foreach ($arr_cont as $key => $value) {
        $unicodestr.= $prefix . base_convert(bin2hex(iconv(&#39;utf-8&#39;, &#39;UCS-4&#39;, $value)), 16, 10) .$postfix;
    }
    return $unicodestr;
}
/**
* $str Unicode编码后的字符串
* $decoding 原始字符串的编码,默认utf-8
* $prefix 编码字符串的前缀,默认"&#"
* $postfix 编码字符串的后缀,默认";"
*/
function unicode_decode($unistr, $encoding = &#39;utf-8&#39;, $prefix = &#39;&#&#39;, $postfix = &#39;;&#39;) {
    $arruni = explode($prefix, $unistr);
    $unistr = &#39;&#39;;
    for ($i = 1, $len = count($arruni); $i < $len; $i++) {
        if (strlen($postfix) > 0) {
            $arruni[$i] = substr($arruni[$i], 0, strlen($arruni[$i]) - strlen($postfix));
        }
        $temp = intval($arruni[$i]);
        $unistr .= ($temp < 256) ? chr(0) . chr($temp) : chr($temp / 256) . chr($temp % 256);
    }
    return iconv(&#39;UCS-2&#39;, $encoding, $unistr);
}
$str = "PHP二次开发:www.php2.cc";
$unistr = unicode_encode($str);
$unistr2 = unicode_decode($unistr);
echo $unistr . &#39;<br />&#39;;
echo $unistr2 . &#39;<br />&#39;;
$unistr = unicode_encode($str,&#39;GBK&#39;,&#39;\\u&#39;);
$unistr2 = unicode_decode($unistr,&#39;GBK&#39;,&#39;\\u&#39;);
echo $unistr . &#39;<br />&#39;;
echo $unistr2 . &#39;<br />&#39;;

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn