
PHPで特殊文字をエスケープする方法
初めまして、新卒2年目の岡崎です。今回は、PHPでHTMLタグなどに使われる特殊文字をエスケープする方法を紹介します。
なぜ特殊文字をエスケープする必要があるのか
プログラミングでは、特定の文字(<、>、&、"、'等)が特別な意味を持つため、そのまま使用すると問題が発生する可能性があります。
例えば、HTMLやSQLでは"や'はデータの境界を示し、<script>はブラウザで実行されるコードとして解釈される可能性があります。
特殊文字をエスケープすることで、これらの文字を「単なる文字」として扱い、意図しない動作やセキュリティリスクを防ぐことができます。
PHPで特殊文字をエスケープする方法
PHPで特殊文字をエスケープする場合、htmlspecialchars関数を使います。htmlspecialchars関数は、PHP 4以降で使えます。
$input = '<script>alert("test");</script>'; echo htmlspecialchars($input, ENT_QUOTES, "UTF-8");
出力結果
<script>alert("test");</script>
コードの解説
htmlspecialchars関数は、HTMLで特別な意味を持つ文字をエスケープし、表示できるように変換します。
第二引数でよく使われる入るフラグを紹介します。
| フラグ | 説明 |
|---|---|
ENT_QUOTES |
ダブルクォート (") はエスケープするが、シングルクォート (') はそのまま |
ENT_NOQUOTES |
クォートをエスケープしない |
ENT_SUBSTITUTE |
文字エンコーディング(UTF-8 など)に存在しない文字を?に置き換える |
ENT_HTML401 |
HTML4.01のエンティティエンコードルールに従う |
htmlspecialchars関数の公式ドキュメントはこちらです。
最後に
今回は、PHPでHTMLタグ等に使われる特殊文字をエスケープする方法を紹介しました。適切にエスケープを行うことで、予期しない動作を防いだり、セキュリティ対策をすることができます。
皆さんの何かのお役に立てれば幸いです。