HTMLタグのエスケープまとめ

はじめに

  • PHPにはエルケープ処理をする関数がたくさん存在する。その中でもよく使う関数をまとめた。

いろいろな関数

htmlspecialchars

雛形

htmlspecialchars(string, flags, encoding)

引数

string

  • 変換される文字列。

flags

  • クォートや無効な符号単位シーケンス、文字型の扱いを指定する。デフォルトはENT_QUOTESで、シングルクォートとダブルクォートを共に変換する。

encoding

  • オプションの引数。文字を変換するときに使うエンコーディングを定義する。

機能

  • 特殊文字を HTML エンティティに変換する。
    • HTMLエンティティとは、アンパサンド(&)で始まりセミコロン(;)で終わる記号を表示するHTMLの命令を表す文字のことである。たとえばコピーライトの記号「©」を表示させるHTMLエンティティは「©」である。

  • 入力
echo htmlspecialchars(<script>alert('XSS');</script>)
  • 出力
<script>alert('XSS');</script>

htmlentities

雛形

htmlentities(string, flags, encoding)

引数

  • htmlspecialcharsと同じ。

機能

  • 特殊文字だけでなく、特殊記号もHTMLエンティティに変換する。

  • 入力
echo htmlentities(<script>alert('XSS');</script>)
  • 出力
<script>alert('XSS');</script>

strip_tags

雛形

strip_tags(string, allowed_tags)

引数

string

  • 入力文字列。

allowed_tags

  • 取り除かないタグを指定する。

機能

  • 文字列からHTMLおよびPHPタグを取り除く

  • 入力
echo strip_tags(<script>alert('XSS');</script>)
  • 出力
alert('XSS');