ホームページ > バックエンド開発 > PHPチュートリアル > PHP で Unicode エスケープ シーケンスをデコードするにはどうすればよいですか?

PHP で Unicode エスケープ シーケンスをデコードするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-22 14:26:19
オリジナル
348 人が閲覧しました

How to Decode Unicode Escape Sequences in PHP?

PHP での Unicode エスケープ シーケンスのデコード

文字エンコーディングは、特に「u00ed」のような Unicode エスケープ シーケンスを使用する場合、混乱を招く可能性があります。 PHP でこれらのシーケンスを適切な UTF-8 文字にデコードする方法を知りたい場合は、この記事で簡単な解決策を説明します。

preg_replace_callback の使用

Unicode をデコードするにはPHP のエスケープ シーケンスでは、preg_replace_callback() 関数を使用できます。その使用法を示すコード スニペットを次に示します。

$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);
ログイン後にコピー

この正規表現パターンは、すべての Unicode エスケープ シーケンスに一致し、コールバック関数を使用して各一致をデコードします。コールバック関数は次の処理を行います:

  • pack('H*') を使用して Unicode コード ポイントの 16 進表現 (例: "00ed") をバイナリ文字列に変換します。
  • 次を使用してバイナリ文字列を UTF-8 にデコードしますmb_convert_encoding().

さまざまな Unicode エンコーディングの処理

Unicode データが C で一般的な UCS-2 ではなく UTF-16 に基づいている場合/C 、Java、および JSON では、わずかに異なるバージョンのコールバックを使用できますfunction:

$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);
ログイン後にコピー

この変更により、デコード関数が UTF-16 でエンコードされたデータを正しく処理できるようになります。

以上がPHP で Unicode エスケープ シーケンスをデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート