htmlspecialchars

(PHP 3, PHP 4, PHP 5)

htmlspecialchars --  特殊文字を HTML エンティティに変換する

説明

string htmlspecialchars ( string string [, int quote_style [, string charset [, bool double_encode]]] )

文字の中には HTML において特殊な意味を持つものがあり、 それらの本来の値を表示したければ HTML の表現形式に変換してやらなければなりません。 この関数は、これらの変換を行った結果の文字列を返します。 これは、日常的な Web プログラミングにおいて最も有用な変換を行います。 全ての HTML 文字エンティティを変換する必要がある場合には、代わりに htmlentities() を使用してください。

この関数は、掲示板やゲストブックなどでユーザが書きこんだテキストから HTML のマークアップ用文字を取り除く場合に有用です。 オプションの 2 番目の引数 quote_style は、 シングルおよびダブルクオートされた文字をどのように扱うかを指定します。 デフォルトの ENT_COMPAT は下位互換性のためのモードで、 ダブルクオートは変換しますがシングルクオートは変換しません。 ENT_QUOTES が設定されている場合は、シングルクオートとダブルクオートが共に変換されます。 ENT_NOQUOTES が設定されている場合は、シングルクオートとダブルクオートは共に変換されません。

変換対象となる文字は以下の通りです。

例 1. htmlspecialchars() の例

<?php
$new
= htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo
$new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

この関数は上記のあげたもの以外に関しては一切の変換を行わないことに注意してください。 すべての変換を行うには htmlentities() を参照してください。オプションの 2 番目の引数は、PHP 3.0.17 および PHP 4.0.3 で追加されました。

3 番目の引数 charset は、 変換に使用される文字セットを指定します。 デフォルトの文字セットは、ISO-8859-1 です。3 番目の引数のサポートは、PHP 4.1.0 で追加されました。

PHP 4.3.0 以降では、以下の文字セットがサポートされます。

表 1. サポートされる文字セット

文字セットエイリアス説明
ISO-8859-1ISO8859-1 西欧、Latin-1
ISO-8859-15ISO8859-15 西欧、Latin-9 。Latin-1(ISO-8859-1) に欠けている ユーロ記号やフランス・フィンランドの文字を追加したもの。
UTF-8  ASCII 互換のマルチバイト 8 ビット Unicode 。
cp866ibm866, 866 DOS 固有のキリル文字セット。 4.3.2 以降でサポートされます。
cp1251Windows-1251, win-1251, 1251 Windows 固有のキリル文字セット。 4.3.2 以降でサポートされます。
cp1252Windows-1252, 1252 西欧のための Windows 固有の文字セット。
KOI8-Rkoi8-ru, koi8r ロシア語。4.3.2 以降でサポートされます。
BIG5950 繁体字中国語。主に台湾で使用されます。
GB2312936 簡体字中国語。国の標準文字セットです。
BIG5-HKSCS  Big5 に香港の拡張を含めたもの。繁体字中国語。
Shift_JISSJIS, 932 日本語。
EUC-JPEUCJP 日本語。

注意: それ以外の文字セットは理解できず、かわりに ISO-8859-1 が使用されます。

double_encode をオフにすると、PHP は既存の html エンティティをエンコードしません。 デフォルトでは、既存のエンティティも含めてすべてを変換します。 このパラメータは PHP 5.2.3 で追加されました。

get_html_translation_table(), htmlspecialchars_decode(), strip_tags(), htmlentities(), nl2br() も参照ください。