php特殊字符过滤,html标签处理

时间:2023-03-08 23:31:58
php特殊字符过滤,html标签处理

1,magic_quotes_gpc 

默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

其实这个函数就是判断PHP有没有自动调用addslashes 这个函数

例子:判断是否开启magic_quotes_gpc ,如果没有开启则用stripslashes处理字符串

    define('SYS_MAGICGPC', get_magic_quotes_gpc());

    $_POST = magic_gpc($_POST);

    function magic_gpc($string) {
if(SYS_MAGICGPC) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = magic_gpc($val);
}
} else {
$string = stripslashes($string);
}
}
return $string;
}

2,addcslashes()

定义和用法
addcslashes() 函数在指定的字符前添加反斜杠。
语法
addcslashes(string,characters)参数 描述 
string 必需。规定要检查的字符串。 
characters 可选。规定受 addcslashes() 影响的字符或字符范围。 
提示和注释
注释:在对 0,r,n 和 t 应用 addcslashes() 时要小心。在 PHP 中,\0,\r,\n 和 \t 是预定义的转义序列。
实例
例子 1
在本例中,我们要向字符串中的特定字符添加反斜杠:
<?php
$str = "Hello, my name is John Adams.";
echo $str;
echo addcslashes($str,'m');
echo addcslashes($str,'J');
?>
输出:
Hello, my name is John Adams.
Hello, \my na\me is John Ada\ms.
Hello, my name is \John Adams.

而函数addslashes()的使用:
PHP addslashes() 函数
定义和用法
addslashes() 函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:
•单引号 (')
•双引号 (")
•反斜杠 (\)
•NULL
语法
addslashes(string)参数 描述 
string 必需。规定要检查的字符串。 
提示和注释
提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备合适的字符串。

例子
在本例中,我们要向字符串中的预定义字符添加反斜杠:
<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>
输出:
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.

stripcslashes()和stripslashes()

他们都有对应的去除他们添加的反斜杠的方法,分别是:stripcslashes()和stripslashes()。


 htmlspecialchars

替换html代码中的标签

定义和用法

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

预定义的字符是:

  • & (和号)成为 &
  • " (双引号)成为 "
  • ' (单引号)成为 '
  • < (小于)成为 <
  • > (大于)成为 >

默认替换上面的几个

htmlspecialchars_decode()用法刚好和上面的相反.


 strip_tags

去掉字符串中的html标签只保留文字

举例:

$str = '<a href="a.html" />此处是中文</a>';
echo strip_tags($str);
//结果是:此处是中文