关于PHP htmlspecialchars函数
关于htmlspecialchars
htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = TRUE ]]] ) : string
・将特殊字符转换为HTML实体。
・第二个参数是一个标志常量,用于指定引号、无效的字符单元序列以及文档处理方式。默认为ENT_COMPAT | ENT_HTML401。
フラグ定数名説明ENT_COMPATダブルクオートはエスケープするが、シングルクオートはしないENT_QUOTESダブルクオートもシングルクオートも両方エスケープするENT_NOQUOTESダブルクオートもシングルクオートもエスケープしないENT_HTML401HTML 4.01 として処理ENT_HTML5HTML 5 として処理
转换前和转换后
< → < > → >
& → &
” → ”
如果在第二个参数中指定ENT_QUOTES,则还会执行以下转换。
‘ → ‘ or ‘
・第三个参数定义了字符编码方式。
转换的原因
-
- XSSを防ぐため。
- テキストで入力されたものを正しくHTMLに出力するため。
请举一个例子
//次の様なラッパー関数を準備する
function h($str) {
return htmlspecialchars($str, ENT_QUOTES|ENT_HTML5, "UTF-8");
}
// HTMLに出力する際
echo h('<hoge>');