php实际开发中可以用到的安全过滤函数
浏览量:509
1、stripslashes() 函数
stripslashes()主要功能是删除反斜杠
<?phpecho stripslashes("Who\'s Bill Gates?");?>
输出结果:
Who's Bill Gates?
2、htmlentities() 函数
htmlentities() 把字符转换为 HTML 实体
<?php$str = "<? W3S?h????>";echo htmlentities($str);?>
以上代码的 HTML 输出如下(查看源代码):
<!DOCTYPE html><html><body><© W3Sçh°°¦§></body></html>
以上代码的浏览器输出:
<? W3S?h????>
3、htmlspecialchars() 函数
把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:
<?php$str = "This is some <b>bold</b> text.";echo htmlspecialchars($str);?>
以上代码的 HTML 输出如下(查看源代码):
<!DOCTYPE html><html><body>This is some <b>bold</b> text.</body></html>
以上代码的浏览器输出:
This is some <b>bold</b> text.
4、strip_tags()函数
剥去字符串中的 HTML 标签:
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。
注释:该函数是二进制安全的。
<?phpecho strip_tags("Hello <b>world!</b>");?>
Hello world!
5、addslashes函数
定义和用法
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:
单引号(')
双引号(")
反斜杠(\)
NULL
提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。
注释:默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
6、trim 函数
定义和用法
trim() 函数移除字符串两侧的空白字符或其他预定义字符。
相关函数:
ltrim() - 移除字符串左侧的空白字符或其他预定义字符
rtrim() - 移除字符串右侧的空白字符或其他预定义字符
7、preg_replace 函数
preg_replace 函数执行一个正则表达式的搜索和替换。
语法
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换。
参数说明:
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
$limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
$count: 可选,为替换执行的次数。
返回值
如果 subject 是一个数组, preg_replace() 返回一个数组, 其他情况下返回一个字符串。
如果匹配被查找到,替换后的 subject 被返回,其他情况下 返回没有改变的 subject。如果发生错误,返回 NULL。
8、preg_replace_callback 函数
preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
说明
mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
这个函数的行为除了 可以指定一个 callback 替代 replacement 进行替换 字符串的计算,其他方面等同于 preg_replace()。
参数
pattern
要搜索的模式,可以是字符串或一个字符串数组。
callback
一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从subject 中匹配到的结果。回调函数返回真正参与替换的字符串。这是该回调函数的签名:
string handler ( array $matches )
你可能经常会需要callback函数而 仅用于preg_replace_callback()一个地方的调用。在这种情况下,你可以 使用匿名函数来定义一个匿名函数作 为preg_replace_callback()调用时的回调。 这样做你可以保留所有 调用信息在同一个位置并且不会因为一个不在任何其他地方使用的回调函数名称而污染函数名称空间。
Example #1 preg_replace_callback() 和 匿名函数
<?php /* 一个unix样式的命令行过滤器,用于将段落开始部分的大写字母转换为小写。 */ $fp = fopen("php://stdin", "r") or die("can't read stdin"); while (!feof($fp)) { $line = fgets($fp); $line = preg_replace_callback( '|<p>\s*\w|', function ($matches) { return strtolower($matches[0]); }, $line ); echo $line; } fclose($fp); ?>
subject
要搜索替换的目标字符串或字符串数组。
limit
对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
count
如果指定,这个变量将被填充为替换执行的次数。
返回值
如果subject是一个数组, preg_replace_callback()返回一个数组,其他情况返回字符串。 错误发生时返回 NULL。
如果查找到了匹配,返回替换后的目标字符串(或字符串数组), 其他情况subject 将会无变化返回。
9、htmlspecialchars_decode函数
定义和用法
htmlspecialchars_decode() 函数把预定义的 HTML 实体转换为字符。
会被解码的 HTML 实体是:
& 解码成 & (和号)
" 解码成 " (双引号)
' 解码成 ' (单引号)
< 解码成 < (小于)
> 解码成 > (大于)
htmlspecialchars_decode() 函数是 htmlspecialchars() 函数的反函数。