Décodage des séquences d'échappement Unicode en PHP
Si vous avez affaire à des séquences d'échappement Unicode comme "u00ed" en PHP, vous aurez besoin un moyen de les décoder en caractères codés UTF-8 appropriés. La fonction preg_replace_callback() fournit une solution à ce problème.
Pour décoder les séquences d'échappement Unicode à l'aide de preg_replace_callback(), suivez ces étapes :
$str = preg_replace_callback('/\\u([0-9a-fA-F]{4})/', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); }, $str);
Ce modèle d'expression régulière correspond aux séquences d'échappement Unicode comme "u00ed" et capture le point de code hexadécimal entre parenthèses. La fonction de rappel correspondante utilise ensuite les fonctions pack() et mb_convert_encoding() pour convertir le point de code hexadécimal en son caractère UTF-8 correspondant.
Si vous travaillez avec le style C/C/Java/Json Séquences d'échappement basées sur UTF-16, vous pouvez utiliser une version légèrement différente de l'expression régulière :
$str = preg_replace_callback('/\\u([0-9a-fA-F]{4})/', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UTF-16BE'); }, $str);
En spécifiant 'UTF-16BE' comme encodage pour mb_convert_encoding(), vous vous assurez que le format big-endian UTF-16 est correctement décodé en UTF-8.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!