PHP htmlentities() 関数

❮ PHP 文字列リファレンス

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

<?php
$str = '<a href="https://www.w3schools.com">Go to w3schools.com</a>';
echo htmlentities($str);
?>

上のコードのHTML出力は次の通り(ソース表示):

&lt;a href=&quot;https://www.w3schools.com&quot;&gt;Go to w3schools.com&lt;/a&gt;

ブラウザへの上のコードの出力は、次の通り:

<a href="https://www.w3schools.com">Go to w3schools.com</a>
例の実行 »

定義と用法

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

チップ: HTMLエンティティを文字に変換するには、html_entity_decode()関数を使用します。

チップ: htmlentities()が使用する変換テーブルを返すには、 get_html_translation_table() 関数を使用します


構文

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

パラメータ 説明
string 必須。変換する文字列を指定する
flags 任意。クォート、無効なエンコーディング、および使用する文書タイプの処理方法を指定する。

使用可能なクォートスタイルは次の通り:

  • ENT_COMPAT - デフォルト。ダブルクォートのみをエンコードする
  • ENT_QUOTES - ダブルクォート、シングルクォートの両方をエンコードする
  • ENT_NOQUOTES - どのクォートもエンコードしない

無効なエンコード:

  • ENT_IGNORE - 空の文字列を返す代わりに無効なエンコーディングを無視する。セキュリティに影響を与える可能性があるため、使用を回避すること
  • ENT_SUBSTITUTE - 無効な符号単位シーケンスを含む文字列を渡したときに、 空の文字列を返すのではなく Unicode の置換文字に置き換える。 UTF-8 の場合は U+FFFD、それ以外の場合は &#FFFD; となる
  • ENT_DISALLOWED - 指定した文書型において無効な符号位置を、Unicode の代替文字である U+FFFD (UTF-8) あるいは &#FFFD; で置き換える

使用する文書タイプを指定する追加のフラグ:

  • ENT_HTML401 - デフォルト。コードを HTML 4.01 として処理する/li>
  • ENT_HTML5 - コードを HTML 5 として処理する/li>
  • ENT_XML1 - コードを XML 1 として処理する/li>
  • ENT_XHTML - コードを XHTML として処理する/li>
character-set 任意。使用する文字セットを指定する文字列。

使用可能な値:

  • UTF-8 - デフォルト。ASCII 互換のマルチバイト 8 ビット Unicode
  • ISO-8859-1 - 西欧
  • ISO-8859-15 - 西欧 (adds the Euro sign + French and Finnish letters missing in ISO-8859-1)
  • cp866 - DOS 固有のキリル文字セット
  • cp1251 - Windows 固有のキリル文字セット
  • cp1252 - 西欧のための Windows 固有の文字セット
  • KOI8-R - ロシア語
  • BIG5 - 繁体字中国語。主に台湾で使用される
  • GB2312 - 簡体字中国語。国の標準文字セット
  • BIG5-HKSCS - Big5 に香港の拡張を含めたもの
  • Shift_JIS - 日本語
  • EUC-JP - 日本語
  • MacRoman - Mac OS で使われる文字セット

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

double_encode 任意。既存のHTMLエンティティをエンコードするかどうかを指定するブール値。
  • TRUE - デフォルト。すべてを変換する
  • FALSE - 既存のhtmlエンティティはエンコードしない

技術内容
返り値: 変換した文字列を返します

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

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

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

double_encode パラメータは PHP 5.2.3 で追加されました

character-set パラメータは PHP 4.1 で追加されました

その他の例

例 1

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

<?php
$str = "Albert Einstein said: 'E=MC²'";
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出力は次の通り(ソース表示):

Albert Einstein said: 'E=MC&sup2;'<br>
Albert Einstein said: &#039;E=MC&sup2;&#039;<br>
Albert Einstein said: 'E=MC&sup2;'

ブラウザへの上のコードの出力は、次の通り:

Albert Einstein said: 'E=MC²'
Albert Einstein said: 'E=MC²'
Albert Einstein said: 'E=MC²'
例の実行 »

例 2

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

<?php
$str = "My name is Øyvind Åsane. I'm Norwegian.";
echo htmlentities($str, ENT_QUOTES, "UTF-8"); // 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 文字列リファレンス