>  기사  >  php教程  >  PHP解密Unicode及Escape加密字符串函数

PHP解密Unicode及Escape加密字符串函数

PHP中文网
PHP中文网원래의
2016-05-23 17:10:151558검색

php代码

<?php   
function uni_decode($s) {   
    preg_match_all(&#39;/\&\#([0-9]{2,5})\;/&#39;, $s, $html_uni);   
    preg_match_all(&#39;/[\\\%]u([0-9a-f]{4})/ie&#39;, $s, $js_uni);   
    $source = array_merge($html_uni[0], $js_uni[0]);   
    $js = array();   
    for($i=0;$i<count($js_uni[1]);$i++) {   
        $js[] = hexdec($js_uni[1][$i]);   
    }   
    $utf8 = array_merge($html_uni[1], $js);   
    $code = $s;   
    for($j=0;$j<count($utf8);$j++) {   
        $code = str_replace($source[$j], unicode2utf8($utf8[$j]), $code);   
    }   
    return $code;//$s;//preg_replace(&#39;/\\\u([0-9a-f]{4})/ie&#39;, "chr(hexdec(&#39;\\1&#39;))",  $s);   
}   
  
function unicode2utf8($c) {   
    $str="";   
    if ($c < 0x80) {   
         $str.=chr($c);   
    } else if ($c < 0x800) {   
         $str.=chr(0xc0 | $c>>6);   
         $str.=chr(0x80 | $c & 0x3f);   
    } else if ($c < 0x10000) {   
         $str.=chr(0xe0 | $c>>12);   
         $str.=chr(0x80 | $c>>6 & 0x3f);   
         $str.=chr(0x80 | $c & 0x3f);   
    } else if ($c < 0x200000) {   
         $str.=chr(0xf0 | $c>>18);   
         $str.=chr(0x80 | $c>>12 & 0x3f);   
         $str.=chr(0x80 | $c>>6 & 0x3f);   
         $str.=chr(0x80 | $c & 0x3f);   
    }   
    return $str;   
}   
  
$str=&#39;%u5927%u5BB6%u597D%uFF0C
\u8FD9\u662F\u6D4B\u8BD5\u6587\u672C\uFF01&#39;;   
echo uni_decode($str);

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