609
火車采集器
PHP對escape的字符串進行解密
PHP對escape的字符串進行解密
作者:小文 發布於:2010-8-28 12:53 Saturday 分類:其它資源
Escape是js 腳本的一種加密字符串的方式.具體詳情可以參見https://www.w3school.com.cn/js/jsref_unescape.asp
有的網站會將中文字進行Escape編碼,然後在顯示時用unescape再進行轉換.比如有這麼一段代碼
<title>廣州公交查詢-由%u91D1%u6CFD%u5927%u53A6到%u767E%u5F81%u79D1%u6280%u5927%u53A6的乘車路線</title>
這個是經過Escape編碼的.我們需要在PHP中將其解密.在網上搜索後,得到加密和解密代碼.
<?php
function unescape($str) { //這個是解密用的
$str = rawurldecode($str);
preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "&#x")
$ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1)));
elseif(substr($v,0,2) == "&#") {
$ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
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;
}
?>
我們測試一下
echo unescape("由%u91D1%u6CFD%u5927%u53A6到%u767E%u5F81%u79D1%u6280%u5927%u53A6的乘車路線");
可以得到 由金澤大廈到百征科技大廈的乘車路線
相關日誌:
評論:
最後更新:2017-05-09 00:27:02