PHP htmlspecialchars()関数

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

例

定義済みの文字 "<" (小なり) と ">" (大なり) を HTML エンティティに変換します:

<?php $str = "This is some <b>bold</b> text."; echo htmlspecialchars($str); ?>

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

<!DOCTYPE html> <html> <body> This is some &lt;b&gt;bold&lt;/b&gt; text. </body> </html>

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

This is some <b>bold</b> text.

例を実行 »

定義と使い方

htmlspecialchars() 関数は、いくつかの定義済み文字を HTML エンティティに変換します。

定義済み文字は次のとおりです:

  • & (アンパサンド) は &amp; になります
  • " (二重引用符) は &quot; になります
  • ' (単一引用符) は ' になります
  • < (小なり) は &lt; になります
  • > (大なり) は &gt; になります

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


構文

htmlspecialchars(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 htmlspecialchars($str, ENT_COMPAT); //デフォルトでは、二重引用符のみをエンコードします echo "<br>"; echo htmlspecialchars($str, ENT_QUOTES); //二重引用符と単一引用符をエンコードします echo "<br>"; echo htmlspecialchars($str, ENT_NOQUOTES); //引用符をエンコードしません ?>

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

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

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

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

例を実行 »

例 2

二重引用符を HTML エンティティに変換します:

<?php $str = 'I love "PHP".'; echo htmlspecialchars($str, ENT_QUOTES); //二重引用符と単一引用符をエンコードします ?>
;

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

<!DOCTYPE html> <html> <body> I love &quot;PHP&quot;. </body> </html>

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

I love "PHP".

例を実行 »


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