PHP html_entity_decode() 関数

HTML エンティティを文字に変換します:

<?php
$str = "<© W3Sçh°°¦§>";
echo html_entity_decode($str);
?>

以下のコードの HTML 出力は以下の通りです(ソースコードを確認してください):

<!DOCTYPE html>
<html>
<body>
<? W3S?h????>
</body>
</html>

以下のコードのブラウザ出力:

<? W3S?h????>

定義と用法

html_entity_decode() 関数は HTML 実体を文字に変換します。

html_entity_decode() 関数は htmlentities() 函数の逆関数。

文法

html_entity_decode(string,flags,character-set)
パラメータ 説明
string 必須。デコードする文字列を指定します。
flags

オプション。指定する引号の処理方法および使用するドキュメントの種類を指定します。

可用的引号类型:

  • ENT_COMPAT - 默认。仅解码双引号。
  • ENT_QUOTES - 解码双引号和单引号。
  • ENT_NOQUOTES - 任何引号都不会被解码。

使用するドキュメントの種類に適用される追加フラグを指定します:

  • ENT_HTML401 - デフォルト。HTML 4.01として処理します。
  • ENT_HTML5 - HTML 5として処理します。
  • ENT_XML1 - XML 1として処理します。
  • ENT_XHTML - XHTMLとして処理します。
character-set

オプション。使用する文字セットを指定する文字列値。

許可された値:

  • UTF-8 - デフォルト。ASCIIに対応する多バイトの 8 ビット Unicode
  • ISO-8859-1 - 西欧
  • ISO-8859-15 - 西欧(ユーロ記号を含むISO-8859-1に失われたフランス語とフィンランド語の文字を追加)
  • cp866 - DOS専用のキリル文字セット
  • cp1251 - Windows専用のキリル文字セット
  • cp1252 - Windows専用の西欧文字セット
  • KOI8-R - ロシア語
  • BIG5 - 繁体中国語、主に台湾で使用
  • GB2312 - 簡体中国語、国家标准文字セット
  • BIG5-HKSCS - 香港拡張付きの Big5
  • Shift_JIS - 日本語
  • EUC-JP - 日本語
  • MacRoman - Macオペレーティングシステムで使用される文字セット

注釈:PHP 5.4以前のバージョンでは、認識できない文字セットは ISO-8859-1 で置き換えられます。PHP 5.4からは、認識できない文字セットは UTF-8 で置き換えられます。

技術的詳細

返り値: 変換された文字列を返します。
PHP バージョン: 4.3.0+

更新ログ:

バージョン 説明
PHP 5 character-set デフォルトの文字セットを UTF-8 に変更しました。
PHP 5.4

追加でドキュメントの種類に適用される翻訳テーブルを指定するフラグが追加されました:

  • ENT_HTML401
  • ENT_HTML5
  • ENT_XML1
  • ENT_XHTML
PHP 5.3.4 追加了对多字节编码的支持。

更多实例

例 1

HTML エンティティを文字に変換します:

<?php
$str = "Bill & 'Steve'";
echo html_entity_decode($str, ENT_COMPAT); // 只转换双引号
echo "<br>";
echo html_entity_decode($str, ENT_QUOTES); // 转换双引号和单引号
echo "<br>";
echo html_entity_decode($str, ENT_NOQUOTES); // 任何引号都不转换
?>

以下のコードの HTML 出力(ソースコードを確認):

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Steve'<br>
Bill & 'Steve'
</body>
</html>

以下のコードのブラウザ出力:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

例 2

西欧の文字セットを使用して、HTML エンティティを文字に変換します:

<?php
$str = "My name is Øyvind Øsane. I'm Norwegian.";
echo html_entity_decode($str, ENT_QUOTES, "ISO-8859-1");
?>

以下のコードの HTML 出力(ソースコードを確認):

<!DOCTYPE html>
<html>
<body>
私の名前は Øyvind Øsane です。ノルウェー人です。
</body>
</html>

以下のコードのブラウザ出力:

私の名前は Øyvind Øsane です。ノルウェー人です。