使用PHP将JS的unicode编码转换为可识别的汉字

今天抓数据的时候,发现js里的汉字全部为“\u738B\u6668”这样的字符串,没想到如何转到可识别的中文汉字,那么下面这段函数产生了……

直接贴code:

/**
 * 将js的unicode转换为中文
 * @param string $strHtml
 * @return string
 */
public function charReplace($strHtml){
	if(empty($strHtml)){
		return '';
	}
	$pregReg = '/(\\\u([\w]{4}))|([\x7f-\xff]+)/i';
	$arrTempData = array();
	preg_match_all($pregReg, $strHtml,$arrTempData);
	if(!empty($arrTempData)){
		//初始一个字符串变量
		$str = '';
		//循环处理
		for($i=0;$i<count($arrTempData[0]);$i++){
			$strTemp = $arrTempData[0][$i];
			if (strpos($strTemp, '\\u') === 0){
				$strAry1 = base_convert(substr($strTemp, 2 , 2), 16, 10);
				$strAry2 = base_convert(substr($strTemp, 4), 16, 10);
				$strChr = chr($strAry1).chr($strAry2);
				//如果不是linux系统,则转换
				if(preg_match("/WIN/i",PHP_OS)){
					$strChr = iconv('UCS-2', 'UTF-8', $strChr);
				}
				//$str .= $strChr;
				$arrCharStartReplace[] = $arrTempData[0][$i];
				$arrCharEndReplace[] = $strChr;
				//echo $arrTempData[0][$i].'==='.$strCh."\r\n";
			}
		}
	}
	$strHtml = str_replace($arrCharStartReplace, $arrCharEndReplace, $strHtml);
	return $strHtml;
}

Leave a Reply

(will not be published)