PHP htmlentities()関数

PHP String リファレンスマニュアル

例

いくつかの文字を HTML エンティティに変換します:

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

上記コードの HTML 出力は次のとおりです(ソースコードを表示):

<!DOCTYPE html>
<html>
<body>
&lt;&copy; W3CS&ccedil;h&deg;&deg;&brvbar;&sect;&gt;
</body>
</html>

上記コードのブラウザ出力は次のとおりです:

<© W3CSçh°°¦§>

サンプルを実行 »

定義と使用法

htmlentities() 関数は文字を HTML エンティティに変換します。

ヒント:HTML エンティティを文字に戻すには、次の関数を使用します。html_entity_decode()関数。

ヒント:次の関数を使用して、 get_html_translation_table()htmlentities() で使用される変換テーブルを返します。


構文

htmlentities(string,flags,character-set,double_encode)

パラメータ 説明
string 必須。変換する文字列を指定します。
flags 省略可能。引用符、無効なエンコーディングの処理方法、および使用するドキュメントタイプを指定します。

使用可能な引用符のタイプ:

  • ENT_COMPAT - デフォルト。二重引用符のみをエンコードします。
  • ENT_QUOTES - 二重引用符と単一引用符をエンコードします。
  • ENT_NOQUOTES - 引用符を一切エンコードしません。

無効なエンコーディング:

  • ENT_IGNORE - 関数が空の文字列を返す代わりに、無効なエンコーディングを無視します。セキュリティに影響を与える可能性があるため、使用は避けるべきです。
  • ENT_SUBSTITUTE - 空の文字列を返す代わりに、無効なエンコーディングを Unicode 置換文字 U+FFFD(UTF-8)または &#FFFD; を含む指定された文字に置き換えます。
  • ENT_DISALLOWED - 指定されたドキュメントタイプの無効なコードポイントを Unicode 置換文字 U+FFFD(UTF-8)または &#FFFD; に置き換えます。

使用するドキュメントタイプを指定する追加のフラグ:

  • 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 に置き換えられます。

double_encode 省略可能。既存の HTML エンティティをエンコードするかどうかを指定するブール値。
  • TRUE - デフォルト。すべてのエンティティを変換します。
  • FALSE - 既存の HTML エンティティをエンコードしません。

技術詳細

戻り値: 変換された文字列を返します。

もしstring無効なエンコーディングが含まれている場合は、ENT_IGNORE または ENT_SUBSTITUTE フラグが設定されていない限り、空の文字列を返します。
PHP バージョン: 4+
更新履歴: PHP 5 では、character-setパラメータのデフォルト値が UTF-8 に変更されました。

PHP 5.4 では、ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_HTML5、ENT_XML1、ENT_XHTML が追加されました。

PHP 5.3 では、ENT_IGNORE が追加されました。

PHP 5.2.3 では、次のパラメータが追加されました。double_encodeパラメータ。

PHP 4.1 では、次のパラメータが追加されました。character-setパラメータ。


その他の例

例 1

いくつかの文字を HTML エンティティに変換します:

<?php
$str = "Jane & 'Tarzan'";
echo htmlentities($str, ENT_COMPAT); // Will only convert double quotes
echo "<br>";
echo htmlentities($str, ENT_QUOTES); // Converts double and single quotes
echo "<br>";
echo htmlentities($str, ENT_NOQUOTES); // Does not convert any quotes
?>

上記コードの HTML 出力は次のとおりです(ソースコードを表示):

<!DOCTYPE html>
<html>
<body>
Jane &amp; 'Tarzan'<br>
Jane &amp; &#039;Tarzan&#039;<br>
Jane &amp; 'Tarzan'
</body>
</html>

上記コードのブラウザ出力は次のとおりです:

Jane & 'Tarzan'
Jane & 'Tarzan'
Jane & 'Tarzan'

サンプルを実行 »

例 2

西ヨーロッパの文字セットを使用して、いくつかの文字を HTML エンティティに変換します:

<?php
$str = "My name is Øyvind Åsane. I'm Norwegian.";
echo htmlentities($str, ENT_QUOTES, "ISO-8859-1"); // Will only convert double quotes (not single quotes), and uses the character-set Western European
?>

上記コードの HTML 出力は次のとおりです(ソースコードを表示):

<!DOCTYPE html>
<html>
<body>
My name is &Oslash;yvind &Aring;sane. I&#039;m Norwegian.
</body>
</html>

上記コードのブラウザ出力は次のとおりです:

My name is Øyvind Åsane. I'm Norwegian.

サンプルを実行 »


PHP String リファレンスマニュアル その他の拡張