爬蟲或 API 回傳資料中常見 \u65b0\u6d6a\u5fae\u535a 這類 Unicode 轉義序列,需還原為中文「新浪微博」。
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; // 輸出:新浪微博
class Helper_Tool {
static function unicodeDecode($data) {
return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', function($m) {
return mb_convert_encoding(pack('H*', $m[1]), 'UTF-8', 'UCS-2BE');
}, $data);
}
}
echo Helper_Tool::unicodeDecode('\u65b0\u6d6a\u5fae\u535a'); // 新浪微博
function unicodeDecode($name) {
$json = '{"str":"' . $name . '"}';
$arr = json_decode($json, true);
return empty($arr) ? '' : $arr['str'];
}
echo unicodeDecode('\u65b0\u6d6a\u5fae\u535a'); // 新浪微博
輸入字串 不能包含單引號,否則 JSON 結構會破壞導致解析失敗。若來源不可控,需先 str_replace("'", "\\'", $name) 轉義。
| 維度 | 方案 A | 方案 B |
|---|---|---|
| 穩定性 | 高,無特殊字元限制 | 中,需預處理單引號 |
| 效能 | 略優 | 略慢(JSON 編解碼) |
| 適用場景 | 通用、生產環境推薦 | 快速測試、可控輸入 |