phpには、フォームに入力された悪意あるjavascriptやhtml要素を無毒化してくれるhtmlspecialchars()
があります。
特殊な文字の機能を別の文字に置き換えてくれるエスケープを行うさい、引数に指定した値によってエスケープできる文字列が変わります。
ENT_CONBATが、変数展開ができるダブルクォートは、変換しないがシングルクォートは変換する。ENT_QUOTESが両方とも変換し、ENT_NOQUOTESが変換しません。
PHPマニュアルというサイトを拝見するとこの三つ以外にもENT_IGNORE、ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_XML1、ENT_XHTML、ENT_HTML5
があります。
ただ読解力が無いのか、提示した八つの定数のうちENT_IGNORE、ENT_SUBSTITUTE、ENT_DISALLOWED
は、マニュアルに書いてあることが全く理解できませんでした。
特に頭を悩ませた単語が、無効な符号単位シーケンス(文字コード?)、指定した文書型(DOCTYPE?)、符号位置です。噛み砕いて説明していただくとどうなりますか。
残りのENT_HTML401、ENT_XML1、ENT_XHTML、ENT_HTML5
は、htmlspecialcahrsで受け取った値をENT_のあとに続く文字として扱うと書いてありました。
html5やファイルの書き方の規則の一つであるXMLなどは、理解できますが値をそれらとして扱うというのは、具体的にどういうことなのでしょうか。