使用該方法成功輸出結果:
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; //輸出: 新浪微博
參考網址:https://blog.csdn.net/gongqinglin/article/details/80062695
上面的方法親測有效
下面是使用chatgpt輸出的結果,親測也是可以的,其實是一樣的方法,只是變個順序。
<?php
$unicode_string = '\u4f60\u597d\uff0c\u4e16\u754c\uff01';
$decoded_string = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}, $unicode_string);
echo $decoded_string; // 輸出:你好,世界!
?>
這個例子中,我們使用 preg_replace_callback()
函數找到所有匹配 \u
後跟四個十六進制數字的字符串。然後我們使用一個匿名函數(回調函數)來處理這些匹配項。在這個回調函數中,我們首先使用 pack()
函數將匹配到的十六進制數字轉換為二進制字符串,然後用 mb_convert_encoding()
函數將其從 UCS-2BE 編碼轉換為 UTF-8 編碼。
發布者:彬彬筆記,轉載請註明出處:https://www.binbinbiji.com/zh-hant/php/2173.html