以前懵懵懂懂的看过,没怎么在意,现在总结一下
一般来说,像留言板之类的content,用这样的就够了:
$content=addslashes(htmlspecialchars($_POST['content']));
htmlspecialchars:这个函数在php里面是这样说明的:
把“&”变成&
把“"(双引号)”变成"
把“'(单引号)”变成'
把“<”变成<
把“>”变成>
下面是一个例子:
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
ENT_NOQUOTES 在这里是一个字符集设置(chartset);
addslashes这个东西是这样用的:返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。总的说,就是转义字符啦。
还原空格与回车这样做:
$content=ereg_replace("\n","<br>",ereg_replace(" "," ",$content));
函数ereg_replace ( string pattern, string replacement, string string ) 就是吧string中含有pattern字符串的部分替换为replacement字符串。
说到这里,也应该够用了。但网上还有其他的方法或者辅助的方法,那就搜罗一下:
strip_tags:消除html和php标签,也就是去掉如<a><table>之类的东西,可以设置排除不消除的标签,在第二个参数那里设置,如strinstrip_tags($text, '<p>');就是排除了<p>标签,所以遇到p标签时,它并不会去除掉p标签。
trim()清除掉前端和末尾的不可见字符:第二个参数(特指要删除某个字符)可选,如果没有,则删除所有的包含一下的前端末尾字符
"\0" - NULL
"\t" - tab
"\n" - new line
"\x0B" - 纵向列表符
"\r" - 回车
" " - 普通空白字符
顺便提一下intval,它将可能的字符串转换成数字,不过对于弱类型的php来说,不是很必要的。