用户编辑上传的文字往往会包含<>""&这样的代码,如果不在后台加以处理,往往会导致不少安全问题
php自带了htmlentities和htmlspecialchars这两个方法
htmlentities 可以把用户输入的所有文字全部格式化
string htmlentities ( string string [, int quote_style [, string charset]] )
第一个参数是要格式化的字符串
第二个参数有三种情况
ENT_COMPAT | Will convert double-quotes and leave single-quotes alone. |
ENT_QUOTES | Will convert both double and single quotes. |
ENT_NOQUOTES | Will leave both double and single quotes unconverted. |
第一种会转换双引号不转换单引号
第二种会同时转换单引号和双引号
第三种会不转换单引号和双引号
第三个参数是设置编码格式
字符集 | 别名 | 描述 |
---|---|---|
ISO-8859-1 | ISO8859-1 | 西欧,Latin-1 |
ISO-8859-15 | ISO8859-15 | 西欧,Latin-9。增加了 Latin-1(ISO-8859-1)中缺少的欧元符号、法国及芬兰字母。 |
UTF-8 | ASCII 兼容多字节 8-bit Unicode。 | |
cp866 | ibm866, 866 | DOS-特有的 Cyrillic 字母字符集。PHP 4.3.2 开始支持该字符集。 |
cp1251 | Windows-1251, win-1251, 1251 | Windows-特有的 Cyrillic 字母字符集。PHP 4.3.2 开始支持该字符集。 |
cp1252 | Windows-1252, 1252 | Windows 对于西欧特有的字符集。 |
KOI8-R | koi8-ru, koi8r | 俄文。PHP 4.3.2 开始支持该字符集。 |
BIG5 | 950 | 繁体中文,主要用于中国台湾。 |
GB2312 | 936 | 简体中文,国际标准字符集。 |
BIG5-HKSCS | 繁体中文,Big5 的延伸,主要用于香港。 | |
Shift_JIS | SJIS, 932 | 日文。 |
EUC-JP | EUCJP | 日文。 |
下面是htmlspecialchars
string htmlspecialchars ( string string [, int quote_style [, string charset]] )
它的三个参数和htmlentities是一样的
它和htmlentities的区别就在于:
-
'&' (ampersand) becomes '&'
-
'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
-
''' (single quote) becomes ''' only when ENT_QUOTES is set.
-
'<' (less than) becomes '<'
-
'>' (greater than) becomes '>'
可以了解到htmlspecialchars只转化上面这几个html代码,而htmlentities却会转化所有的html代码,连同里面的它无法识别的中文字符也会转化出来。