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

# get_html_translation_table

(PHP 4, PHP 5, PHP 7)

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

### 説明

get_html_translation_table ([ int `$table` = HTML_SPECIALCHARS [, int `$flags` = ENT_COMPAT | 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_COMPAT | ENT_HTML401 です。

  使用可能な `flags` 定数
  定数名 | 説明
  --- | ---
  `ENT_COMPAT` | テーブルにダブルクォート用のエンティティを含めますが、シングルクォート用は含めません。
  `ENT_QUOTES` | テーブルにダブルクォート用、シングルクォート用の両方のエンティティを含めます。
  `ENT_NOQUOTES` | テーブルにダブルクォート用、シングルクォート用のどちらのエンティティも含めません。
  `ENT_HTML401` | HTML 4.01 用のテーブル。
  `ENT_XML1` | XML 1 用のテーブル。
  `ENT_XHTML` | XHTML 用のテーブル。
  `ENT_HTML5` | HTML 5 用のテーブル。

`encoding`

  使用するエンコーディング。省略した場合のデフォルト値は、 PHP 5.4.0 より前のバージョンでは ISO-8859-1、そして PHP 5.4.0 以降では 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() を参照ください) の順でエンコーディングを検出します。 この方法はおすすめしません。

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

### 返り値

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

### 変更履歴

バージョン | 説明
--- | ---
5.4.0 | `encoding` パラメータのデフォルトが UTF-8 に変わりました。
5.4.0 | 定数 `ENT_HTML401`、`ENT_XML1`、 `ENT_XHTML` および `ENT_HTML5` が追加されました。
5.3.4 | `encoding` パラメータが追加されました。

### 例

例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 エンティティを適切な文字に変換する