#背景
会員登録画面を作成中に出てきたので、備忘録かねて作成しました。
macOS : Monterey
PHP : 8.1.1
#エスケープ処理について
htmlspecialchars()はエスケープ処理を行う関数であるが、まずエスケープ処理ってなんだってなったので調べてみた。
マークアップ言語のHTMLに限らず、プログラミング言語ではその言語にとって特別な意味を持つ記号があり、それをエスケープシーケンス(エスケープ文字、特殊文字)と言う。例えばHTMLでは < とか > とかが該当する。
記事に文章を入力するときなどに < や > を使おうとすると、通常これらの文字は、HTMLを動かす為に必要な記号だと判断され上手く表示されない。
そのため、入力フォームなどで < や > を文字として変換するための処理が用意されており、その処理のことをエスケープ処理という。
#htmlspecialchars()の使い方
htmlspecialchars(変換したい文字列, フラグ(変換するルールみたいなもの), エンコード, 既存のhtmlエンティティをエンコードするか否か(無くてもいい))
htmlspecialchars($memo, ENT_QUOTES, "UTF-8")
第一引数 : エスケープ処理したい文字列
第二引数 : デフォルトでは、ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 詳しくは公式ドキュメント参照
第三引数 : UTF-8などのエンコードを指定
第四引数 : 一つのコード内で、htmlspecialchars()を二重にかける場合などに、変換した文字をさらに変換することを防止(勉強不足ですいませんが、使い方がよく分かってません)
戻り値は、変換後の文字列となる。
因みに、このメソッドはクロスサイト・スクリプティング脆弱性を防止するために重要なメソッドになる。
#参照資料
1.PHP公式ドキュメント
https://www.php.net/manual/ja/function.htmlspecialchars.php
2.エスケープ処理について
https://www.f5.com/ja_jp/services/resources/glossary/escape-processing
3.第四引数について
https://blog.dododori.com/create/program/htmlspecialchars/
4.『体系的に学ぶ 安全なWebアプリケーションの作り方』 P120~137
https://wasbook.org/