PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHP7のUnicodeコードポイントエスケープ構文とは?基本から実例まで解説


PHP 7では、ダブルクォートで囲まれた文字列内に16進形式のUnicodeコードポイントを記述すると、対応するUTF-8文字として出力されます。16進数の桁数は2桁・4桁・6桁以上など、任意の組み合わせが可能です。専用の関数を呼び出す必要はなく、ダブルクォート文字列やヒアドキュメントの中に直接Unicode文字を書けるのが大きな特徴です。また、16進表記の先頭にあるゼロは省略しても問題ありません。

<html>
<head>
<title>UTF-8 Character</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
</html>

ポイント: 「\u{xxx}」という構文を使うことで、任意のUnicode文字を簡単に生成できます。

ヘブライ語やアラビア語のように、左から右ではなく右から左へ読む言語も存在します。こうした場合、U+202E(Right-to-Left Override:右から左へのオーバーライド)というUnicode文字を利用すると、テキストの表示方向を反転させることができます。

サンプルコード:テキストを反転表示する

<?php
    echo "\u{202E} show reversed text";
    echo "\u{202D}";
?>

実行結果

上記のコードを実行すると、テキストが反転された状態で表示されます。

txet desrever wohs

例:Unicodeコードポイントエスケープ構文

<html>
<head>
<title>Tutorialpoint : Unicode codepoint escape syntax</title>
</head>
<body>
<?php
    echo "\u{aaa}";
    echo "\u{0000aaa}";
    echo "\u{9999}";
?>
</body>
</html>

実行結果

このプログラムの出力は以下のとおりです。

પપ香

ご覧のとおり、「\u{aaa}」と「\u{0000aaa}」はどちらも同じ文字を出力しており、先頭ゼロが省略可能であることが分かります。また、「\u{9999}」は漢字の「香」に変換されています。

文字エスケープがより簡単になった

PHP 7になって、文字のエスケープ処理は以前よりも格段に簡単になりました。難しい手順を踏むことなく、文字列の中に直接Unicode文字を含められるようになっています。

<?php
    echo 'You owe me £500.';
?>

実行結果

You owe me £500.

上記の例では、標準的なA〜Zや0〜9の文字に加えて、ポンド記号(£)という特殊文字が使われています。古いバージョンのPHPでは、このような特殊文字は適切に扱わないと、文字コード163がそのまま文字列内に出力され、「163300」のような意図しない結果になってしまうことがありました。そのため、旧バージョンではポンド記号などを必ずエスケープする必要がありました。

一方、PHP 7以降では「\u{a3}」のようにコードポイントを指定すれば、ダブルクォート文字列の中で直接£などのUnicode文字を安全かつ簡潔に扱えます。多言語対応のアプリケーション開発において、この構文は文字化けやエンコード処理の手間を大幅に減らしてくれる便利な機能といえるでしょう。

  1. 【初心者向け】PHPタグとは?基本構文からショートタグまで徹底解説

    PHPタグとは?定義と基本的な使い方PHPスクリプトは、拡張子が「.php」のテキストファイルとして作成され、Webサーバー上に保存されます。サーバー上のPHPパーサーは、<?php(開始タグ)と?>(終了タグ)という特殊な文字列を探し出します。この2つのタグは「PHPタグ」と呼ばれ、その間に記述されたステートメントのみがパーサーによって解釈・実行されます。PHPタグで囲まれたコードは、HTMLドキュメントの中に自由に埋め込むことができます。埋め込まれたPHPコードはサーバー側で実行され、その処理結果だけが出力されるため、残りのHTML部分はクライアントのブラウザーにあるHTMLパ

  2. PHPのpi()関数とは?使い方と定義済み定数との対応を実例付きで解説

    pi()関数の定義と使い方PHPのpi()関数は、数学定数π(円周率)の値を返す関数です。戻り値はfloat型の「3.14159265359」であり、PHPにあらかじめ定義されている定数M_PIとまったく同じ値になります。構文pi ( void ) : floatパラメータこの関数は引数を受け取りません。引数なしでそのまま呼び出すことができます。戻り値pi()関数は数学定数πの値を返し、定義済みの数学定数M_PIと等価です。数式の中では、M_PIの代わりにpi()関数を使うこともできます。対応するPHPバージョンこの関数はPHP 4.x、PHP 5.x、PHP 7.xのすべてのバージョンで利用