html_entity_decode

関数の概要

html_entity_decode は、PHPでHTMLエンティティに変換された文字列を元の文字に戻すための関数です。例えば、&lt;&amp; といったエンティティを、それぞれ <& に変換します。HTMLでエスケープされた文字を普通の文字列として扱いたい場合に使います。

パラメータの説明

  • string $string – 元に戻したいHTMLエンティティを含む文字列。
  • int $flags(省略可能) – デコード方法のフラグ。主に ENT_QUOTESENT_HTML5 などを指定でき、デコードの挙動を調整します。デフォルトは ENT_COMPAT
  • string|null $encoding(省略可能) – 文字エンコーディングを指定。デフォルトは ini_get("default_charset") で設定された値。

戻り値

エンティティが元の文字にデコードされた新しい文字列を返します。入力された文字列内のすべてのHTMLエンティティが可能な限り元の文字に変換されます。

使用例

基本的な使い方

<?php
$text = "これは&lt;strong&gt;重要&lt;/strong&gt;なテキストです。";
$decoded = html_entity_decode($text);
echo $decoded;  // これは重要なテキストです。
?>

HTMLエンティティでエスケープされた文字列を通常のタグや記号に戻しています。

引用符もデコードする例(ENT_QUOTES)

<?php
$text = "Tom said "Hello!"";
$decoded = html_entity_decode($text, ENT_QUOTES);
echo $decoded;  // Tom said "Hello!"
?>

ENT_QUOTES フラグを指定すると、シングルクォート(')やダブルクォート(")もデコードされます。

HTML5エンティティをデコードする例

<?php
$text = "記号:… – —";
$decoded = html_entity_decode($text, ENT_HTML5);
echo $decoded;  // 記号:… – —
?>

HTML5特有のエンティティも正しく変換したい場合は、ENT_HTML5 フラグを使います。

関連する関数

  • htmlentities – 文字列の特定の文字をHTMLエンティティに変換する
  • htmlspecialchars – HTML特殊文字をエンティティに変換する
  • htmlspecialchars_decodehtmlspecialchars で変換したエンティティを元に戻す

まとめ

html_entity_decode はHTMLエンティティ化された文字列を元の文字列に戻すのに便利な関数です。特にWebから取得したデータを加工したり、エスケープされたHTMLを元の状態で扱いたい場合に役立ちます。フラグや文字エンコーディングを適切に設定することで、シングルクォートやHTML5特殊文字なども正確にデコードできます。日常の文字列処理でぜひ活用してください。