【親測有效】PHP解碼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; //輸出: 新浪微博

參考網址: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

(0)
彬彬筆記彬彬筆記
上一篇 2020年3月19日
下一篇 2020年3月19日

相關推薦

發表回復

您的電子郵箱地址不會被公開。 必填項已用 * 標註

蜀ICP備14017386號-13