htmlspecialchars および htmlentities で使用される変換テーブルを返す

# get_html_translation_table

(PHP 4, PHP 5, PHP 7, PHP 8)

get_html_translation_table — htmlspecialchars() および htmlentities() で使用される変換テーブルを返す

### 説明

function get_html_translation_table(int `$table` = `HTML_SPECIALCHARS`, int `$flags` = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, string `$encoding` = "UTF-8"): array

get_html_translation_table() は、 htmlspecialchars() および htmlentities() において内部的に使用される変換テーブルを返します。

> 注意:

> 特殊文字はいくつかの方法でエンコードすることができます。 例えば、`"` は `&quot;`, `&#34;` もしくは `&#x22` としてエンコードすることができます。 get_html_translation_table() の返す値は、 htmlspecialchars() や htmlentities() で使っている形式だけです。

### パラメータ

`table`

  どちらのテーブルを返すか。`HTML_ENTITIES` あるいは `HTML_SPECIALCHARS`。

`flags`

  以下のフラグのビットマスクによる組み合わせで、 どのクォートをテーブルに含めるのか、そしてどのドキュメント形式用のテーブルにするのかを指定します。 デフォルトは `ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401` です。

  使用可能な `flags` 定数
  定数名 | 説明
  --- | ---
  `ENT_COMPAT` | テーブルにダブルクォート用のエンティティを含めますが、シングルクォート用は含めません。
  `ENT_QUOTES` | テーブルにダブルクォート用、シングルクォート用の両方のエンティティを含めます。
  `ENT_NOQUOTES` | テーブルにダブルクォート用、シングルクォート用のどちらのエンティティも含めません。
  `ENT_SUBSTITUTE` | 無効な符号単位シーケンスを含む文字列を渡したときに、 空の文字列を返すのではなく Unicode の置換文字に置き換えます。 UTF-8 の場合は U+FFFD、それ以外の場合は &#FFFD; となります。
  `ENT_HTML401` | HTML 4.01 用のテーブル。
  `ENT_XML1` | XML 1 用のテーブル。
  `ENT_XHTML` | XHTML 用のテーブル。
  `ENT_HTML5` | HTML 5 用のテーブル。

`encoding`

  使用するエンコーディング。省略した場合のデフォルト値は UTF-8 となります。

  以下の文字セットをサポートします。

  サポートする文字セット
  文字セット | エイリアス | 説明
  --- | --- | ---
  ISO-8859-1 | ISO8859-1 | 西欧、Latin-1
  ISO-8859-5 | ISO8859-5 | ほとんど使われないキリル文字セット (Latin/Cyrillic)。
  ISO-8859-15 | ISO8859-15 | 西欧、Latin-9 。Latin-1(ISO-8859-1) に欠けている ユーロ記号やフランス・フィンランドの文字を追加したもの。
  UTF-8 |  | ASCII 互換のマルチバイト 8 ビット Unicode 。
  cp866 | ibm866, 866 | DOS 固有のキリル文字セット。
  cp1251 | Windows-1251, win-1251, 1251 | Windows 固有のキリル文字セット。
  cp1252 | Windows-1252, 1252 | 西欧のための Windows 固有の文字セット。
  KOI8-R | koi8-ru, koi8r | ロシア語。
  BIG5 | 950 | 繁体字中国語。主に台湾で使用されます。
  GB2312 | 936 | 簡体字中国語。国の標準文字セットです。
  BIG5-HKSCS |  | Big5 に香港の拡張を含めたもの。繁体字中国語。
  Shift_JIS | SJIS, SJIS-win, cp932, 932 | 日本語。
  EUC-JP | EUCJP, eucJP-win | 日本語。
  MacRoman |  | Mac OS で使われる文字セット。
  `''` |  | 空文字列を指定すると、 スクリプトのエンコーディング (Zend multibyte)、 default_charset、 そして現在のロケール (nl_langinfo() および setlocale() を参照ください) の順でエンコーディングを検出します。 この方法はおすすめしません。

  > 注意: これら以外の文字セットは理解できません。 かわりにデフォルトのエンコーディングを使用し、警告を発生させます。

### 戻り値

変換テーブルを配列で返します。元の文字がキー、そしてエンティティが値となります。

### 変更履歴

バージョン | 説明
--- | ---
8.1.0 | `flags` のデフォルト値が `ENT_COMPAT` から `ENT_QUOTES` | `ENT_SUBSTITUTE` | `ENT_HTML401` に変更されました。

### 例

例1 変換テーブルの例

    <?php
    var_dump(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES | ENT_HTML5));
    ?>

上の例の出力は、 たとえば以下のようになります。

    array(1510) {
      ["
    "]=>
      string(9) "&NewLine;"
      ["!"]=>
      string(6) "&excl;"
      ["""]=>
      string(6) "&quot;"
      ["#"]=>
      string(5) "&num;"
      ["$"]=>
      string(8) "&dollar;"
      ["%"]=>
      string(8) "&percnt;"
      ["&"]=>
      string(5) "&amp;"
      ["'"]=>
      string(6) "&apos;"
      // ...
    }

### 参考

- htmlspecialchars() - 特殊文字を HTML エンティティに変換する
- htmlentities() - 適用可能な文字を全て HTML エンティティに変換する
- html_entity_decode() - HTML エンティティを対応する文字に変換する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open