** 永远永远不要相信用户提交的数据,要过滤! ****
htmlentities()和htmlspecialchars()默认时都对单引号不起作用,只需要设置第二个参数为ENT_QUOTES即可。
//可以使用get_html_translation_table()函数返回 htmlentities() 和 htmlspecialchars() 函数使用的翻译表。
get_html_translation_table(function,flags,character-set)
/*
function : HTML_SPECIALCHARS - 默认。
HTML_ENTITIES
flag:可选。规定翻译表将包含哪种引号以及翻译表用于哪种文档类型。
可用的引号类型:
ENT_COMPAT - 默认。翻译表包含双引号实体,不包含单引号实体。
ENT_QUOTES - 翻译表包含双引号实体和单引号实体。
ENT_NOQUOTES - 翻译表不包含双引号实体和单引号实体。
character-set:可选。字符串值,规定要使用的字符集,默认UTF-8
*/
get_html_translation_table();
Array
(
["] => "
[&] => &
[<] => <
[>] => >
)
get_html_translation_table(HTML_SPECIALCHARS ,ENT_QUOTES);
Array
(
["] => "
[&] => &
['] => '
[<] => <
[>] => >
)
- htmlentities()
// 函数把字符转换为 HTML 实体
htmlentities(string,flags,character-set,double_encode);
/*
string :必须;
flags : 可选。规定如何处理引号、无效的编码以及使用哪种文档类型。
可用的引号类型:
ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
character-set :可选。一个规定了要使用的字符集的字符串,默认UTF-8.
double_encode :可选。布尔值,规定是否编码已存在的 HTML 实体,默认true
*/
// 把预定义的字符转换为 HTML 实体。
html_entity_decode(string,flags,character-set);
2.htmlspecialchars()
// 预定义的字符转换为 HTML 实体,参数取值同上
htmlspecialchars(string,flags,character-set,double_encode)
// 把预定义的 HTML 实体转换为字符。参数取值同上
htmlspecialchars_decode(string,flags)