PHP解碼unicode編碼的中文字符代碼分享
問(wèn)題背景:
晚上在抓取某網(wǎng)站數(shù)據(jù),結(jié)果在數(shù)據(jù)包中發(fā)現(xiàn)了這么一串編碼的數(shù)據(jù):"......\u65b0\u6d6a\u5fae\u535a......", 這其實(shí)是中文被unicode編碼后了的數(shù)據(jù),我現(xiàn)在就是想解碼出中文來(lái),上度娘搞了半天,試了很多的姿(方)勢(shì)(法),終于搞定了。
解決方案:
呵呵,老外就是給力啊, 猛戳這里看老外給的解決方案
方案A(穩(wěn)定版+推薦):
function replace_unicode_escape_sequence($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); } $name = '\u65b0\u6d6a\u5fae\u535a'; $str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $name); echo $str; //輸出: 新浪微博
//咱將上述方案A給封裝起來(lái)~~~(方案A穩(wěn)定版+升級(jí)+推薦) class Helper_Tool { static function unicodeDecode($data) { function replace_unicode_escape_sequence($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); } $rs = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $data); return $rs; } } //調(diào)用 $name = '\u65b0\u6d6a\u5fae\u535a'; $data = Helper_Tool::unicodeDecode($name); //輸出新浪微博
方案B(次推薦):
<?php function unicodeDecode($name){ $json = '{"str":"'.$name.'"}'; $arr = json_decode($json,true); if(empty($arr)) return ''; return $arr['str']; } $name = '\u65b0\u6d6a\u5fae\u535a'; echo unicodeDecode($name); //輸出: 新浪微博
對(duì)于方案B, 我要特別重點(diǎn)說(shuō)明下注意事項(xiàng), 在好友 XAR (猛戳XAR博客) 的技術(shù)支持下,總結(jié)出要處理的字符串(即傳遞給函數(shù)unicodeDecode的參數(shù)$name的內(nèi)容中一定不能包含單引號(hào),否則就會(huì)導(dǎo)致解析失敗, 所以有必要的話可以借助 str_replace()函數(shù)將非法字符格式化為合格字符)
- php utf-8轉(zhuǎn)unicode的函數(shù)
- 淺析PHP中的UNICODE 編碼與解碼
- PHP中正則表達(dá)式對(duì)UNICODE字符碼的匹配方法
- PHP如何實(shí)現(xiàn)Unicode和Utf-8編碼相互轉(zhuǎn)換
- php UTF-8、Unicode和BOM問(wèn)題
- 簡(jiǎn)單談?wù)刾hp中的unicode和utf8編碼
- php制作unicode解碼工具(unicode編碼轉(zhuǎn)換器)代碼分享
- 用php實(shí)現(xiàn)gb2312和unicode間的編碼轉(zhuǎn)換
- PHP解密Unicode及Escape加密字符串
- php實(shí)現(xiàn)utf-8轉(zhuǎn)unicode函數(shù)分享
- PHP實(shí)現(xiàn)Unicode編碼相互轉(zhuǎn)換的方法示例
相關(guān)文章
Yii2實(shí)現(xiàn)上下聯(lián)動(dòng)下拉框功能的方法
這篇文章主要介紹了Yii2實(shí)現(xiàn)上下聯(lián)動(dòng)下拉框功能的方法,簡(jiǎn)單分析了上下聯(lián)動(dòng)下拉框功能的概念、原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-08-08php使用phpoffice/phpspreadsheet導(dǎo)出圖片實(shí)例
這篇文章主要為大家介紹了php使用phpoffice/phpspreadsheet導(dǎo)出圖片實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11PHP數(shù)據(jù)類型之整數(shù)類型、浮點(diǎn)數(shù)的介紹
本篇文章介紹了,PHP數(shù)據(jù)類型之整數(shù)類型、浮點(diǎn)數(shù)的介紹。需要的朋友參考下2013-04-04PHP 進(jìn)程池與輪詢調(diào)度算法實(shí)現(xiàn)多任務(wù)的示例代碼
這篇文章主要介紹了PHP 進(jìn)程池與輪詢調(diào)度算法實(shí)現(xiàn)多任務(wù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11PHP實(shí)現(xiàn)用session來(lái)實(shí)現(xiàn)記錄用戶登陸信息
在本篇文章里我們給大家分享了關(guān)于PHP如何用session來(lái)實(shí)現(xiàn)記錄用戶登陸信息的知識(shí)點(diǎn),有興趣的朋友們參考下。2018-10-10visual studio code 調(diào)試php方法(圖文詳解)
本篇文章主要介紹了visual studio code 調(diào)試php方法(圖文詳解),具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09