今天抓数据的时候,发现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; }