您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“PHP如何解碼unicode編碼的中文字符代碼”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“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ù)將非法字符格式化為合格字符)
到此,相信大家對(duì)“PHP如何解碼unicode編碼的中文字符代碼”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。