使用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)