PHP htmlspecialchars() 関数
例
事前定義された文字「<」(小さい)と「>」(大きい)を HTML 実体に変換します:
<?php $str = "これは <b>太字</b> テキストの例です."; echo htmlspecialchars($str); ?>
以下のコードの HTML 出力は以下の通りです(ソースコードを確認):
<!DOCTYPE html> <html> <body> これは <b>太字</b> テキストの例です。 </body> </html>
以下のコードのブラウザ出力:
これは <b>太字</b> テキストの例です。
定義と使用法
htmlspecialchars() 関数は、事前定義された文字を HTML 実体に変換します。
事前定義された文字は:
- & (和号)を '&' に置換します。
- " (双重引用符)を '" に置換します。
- ' (単独引用符)を ''' に置換します。
- < (小さい)を '<' に置換します。
- > (大きい)を '>' に置換します。
ヒント:特殊な HTML 実体を文字に戻す場合は、以下を使用してください。 htmlspecialchars_decode() 関数。
構文
htmlspecialchars(string,flags,character-set,double_encode)
パラメータ | 説明 |
---|---|
string | 必須。変換する文字列を指定します。 |
flags |
オプション。引用符、無効なエンコードの処理方法、どのドキュメントタイプを使用するかを指定します。 利用可能な引用符の種類:
無効なエンコード:
使用するドキュメントタイプの追加フラグを指定します。
|
character-set |
オプション。使用する文字セットを指定する文字列。 許可される値:
注釈:PHP 5.4 より前のバージョンでは、認識できない文字セットは ISO-8859-1 で置き換えられます。PHP 5.4 以降では、認識できない文字セットは UTF-8 で置き換えられます。 |
double_encode |
オプション。既存の 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 = "Bill & 'Steve'"; echo htmlspecialchars($str, ENT_COMPAT); // ダブルクォートのみ変換 echo "<br>"; echo htmlspecialchars($str, ENT_QUOTES); // ダブルクォートとシングルクォートの変換 echo "<br>"; echo htmlspecialchars($str, ENT_NOQUOTES); // いかなるクォートも変換しない ?>
以下のコードの HTML 出力は以下の通りです(ソースコードを確認):
<!DOCTYPE html> <html> <body> Bill & 'Steve'<br> Bill & 'Steve'<br> Bill & 'Steve' </body> </html>
以下のコードのブラウザ出力:
Bill & 'Steve' Bill & 'Steve' Bill & 'Steve'
例 2
ダブルクォートを HTML エスケープシーケンスに変換:
<?php $str = 'I love "PHP".'; echo htmlspecialchars($str, ENT_QUOTES); // ダブルクォートとシングルクォートの変換 ?>
以下のコードの HTML 出力は以下の通りです(ソースコードを確認):
<!DOCTYPE html> <html> <body> I love "PHP". </body> </html>
以下のコードのブラウザ出力:
I love "PHP".