php教程

超轻量级php框架startmvc

PHP解密Unicode及Escape加密字符串

更新时间:2020-03-04 03:24:01 作者:startmvc
本文给大家分享一个PHP解密Unicode及Escape加密字符串函数<?phpfunctionuni_decode($s){preg_match_a

本文给大家分享一个PHP解密Unicode及Escape加密字符串函数


<?php 
function uni_decode($s) { 
 preg_match_all('/\&\#([0-9]{2,5})\;/', $s, $html_uni); 
 preg_match_all('/[\\\%]u([0-9a-f]{4})/ie', $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('/\\\u([0-9a-f]{4})/ie', "chr(hexdec('\\1'))", $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='%u5927%u5BB6%u597D%uFF0C我是孤魂!<br />\u8FD9\u662F\u6D4B\u8BD5\u6587\u672C\uFF01'; 
echo uni_decode($str); // 大家好,我是孤魂!这是测试文本! 

在网上搜索一把,很多用php实现的escape函数,大同小异


function phpescape($str){ 
 preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$newstr); 
 $ar = $newstr[0]; 
 foreach($ar as $k=>$v){ 
 if(ord($ar[$k])>=127){ 
 $tmpString=bin2hex(iconv("GBK","ucs-2",$v)); 
 if (!eregi("WIN",PHP_OS)){ 
 $tmpString = substr($tmpString,2,2).substr($tmpString,0,2); 
 } 
 $reString.="%u".$tmpString; 
 } else { 
 $reString.= rawurlencode($v); 
 } 
 } 
 return $reString; 
} 

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 解密 Unicode加密 Escape加密