A. 如何正确运用PHP filter判断过滤数据
PHP 5.2以及更高的版本,PHP filter被绑定于系统,它可以对数据进行自动的过滤和判断。 第一种、PHP filter判断一个变量的内容是否符合要求 使用函数filter_var,第一个参数是要判断的变量。第二个参数是判断的要求,FILTER_VALIDATE_EMAIL表示判断是否符合email格式。如果变量是类似’[email protected]’的数据,系统就会完整的输出‘[email protected]’。如果是错误的格式,比如’boy’,就会输出false。如果没有填写表单中的email字段,系统输出空字符串。$email=‘[email protected]’; echofilter_var($email, FILTER_VALIDATE_EMAIL); 第二种、PHP filter根据要求过滤一个变量的内容 和上面唯一的不同是第二个参数使用FILTER_SANITIZE_EMAIL,输出的结果会不同。如果变量是类似’[email protected]’的数据,系统就会完整的输出’[email protected]’。如果是错误的格式,比如’boy-afds3′,只要是数字和字母和划线等email格式中可以出现的内容,系统同样会完整的输出’boy-afds3′。如果变量没有设置内容,系统输出空字符串。如果是’boy阿三’,系统会把email格式中不允许的东西去除,输出’boy’。$email=‘[email protected]’; echofilter_var($email, FILTER_SANITIZE_EMAIL); 第三种、PHP filter判断输入的变量的内容是否符合要求 使用函数filter_input。第一个参数表示从那里获得的数据,INPUT_POST表示通过POST方法传递过来,还可以使用INPUT_GET, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV,代表相应的途径。第二个参数就是数据的名称。第三个参数代表过滤的要求,FILTER_VALIDATE_EMAIL表示判断数据是否符合email格式。 假设通过表单的POST过来的一个字段email。如果是类似 ’[email protected]’ 的数据,系统就会完整的输出’[email protected]’。如果是错误的格式,比如’boy’,就会输出false。如果没有填写表单中的email字段,系统输出null,也就是空。 echofilter_input(INPUT_POST, ‘email’,FILTER_VALIDATE_EMAIL); 第四种、PHP filter根据要求过滤输入的变量的内容 和上面唯一的不同是第二个参数使用FILTER_SANITIZE_EMAIL,输出的结果会不同。假设通过表单的POST过来的一个字段email。 如果是类似’[email protected]’的数据,系统就会完整的输出’[email protected]’。如果是错误的格式,比如’boy-afds3′,只要是数字和字母和划线等email格式中可以出现的内容,系统同样会完整的输出’boy-afds3′。如果没有填写表单中的email字段,系统输出null,也就是空。如果是’boy阿三’源码天空 ,系统会把email格式中不允许的东西去除,输出’boy’。 echofilter_input (INPUT_POST,‘email’,
B. 使用thinkphp时,表单提交的html内容,全被" \ " 反斜杠过滤了。怎么在前台读取到html实际内容呢去掉 \
因为默认的使用的htmlspecialchars()进行处理的。你可以使用
htmlspecialchars_decode()转成字符
C. 过滤不良词语PHP的代码应该怎样写
用遍历数组和Strpos来完成$str = "我爱你,不良词语1"; //受检测的字符串$arr=array('不良词语1','不良词语2','不良词语3');foreach ($arr as $v){ $check = strpos($str,$v); if ($check > 0) { echo "检测到不良词语"; die(); //程序终止 }echo "OK。通过检测,没有发现不良词语";}
D. 用php过滤html部分标签
$str=preg_replace("/\s+/", " ", $str); //过滤多余回车
$str=preg_replace("/<[ ]+/si","<",$str); //过滤<__("<"号后面带空格)
$str=preg_replace("/<\!--.*?-->/si","",$str); //注释
$str=preg_replace("/<(\!.*?)>/si","",$str); //过滤DOCTYPE
$str=preg_replace("/<(\/?html.*?)>/si","",$str); //过滤html标签
$str=preg_replace("/<(\/?head.*?)>/si","",$str); //过滤head标签
$str=preg_replace("/<(\/?meta.*?)>/si","",$str); //过滤meta标签
$str=preg_replace("/<(\/?body.*?)>/si","",$str); //过滤body标签
$str=preg_replace("/<(\/?link.*?)>/si","",$str); //过滤link标签
$str=preg_replace("/<(\/?form.*?)>/si","",$str); //过滤form标签
$str=preg_replace("/cookie/si","COOKIE",$str); //过滤COOKIE标签
$str=preg_replace("/<(applet.*?)>(.*?)<(\/applet.*?)>/si","",$str); //过滤applet标签
$str=preg_replace("/<(\/?applet.*?)>/si","",$str); //过滤applet标签
$str=preg_replace("/<(style.*?)>(.*?)<(\/style.*?)>/si","",$str); //过滤style标签
$str=preg_replace("/<(\/?style.*?)>/si","",$str); //过滤style标签
$str=preg_replace("/<(title.*?)>(.*?)<(\/title.*?)>/si","",$str); //过滤title标签
$str=preg_replace("/<(\/?title.*?)>/si","",$str); //过滤title标签
$str=preg_replace("/<(object.*?)>(.*?)<(\/object.*?)>/si","",$str); //过滤object标签
$str=preg_replace("/<(\/?objec.*?)>/si","",$str); //过滤object标签
$str=preg_replace("/<(noframes.*?)>(.*?)<(\/noframes.*?)>/si","",$str); //过滤noframes标签
$str=preg_replace("/<(\/?noframes.*?)>/si","",$str); //过滤noframes标签
$str=preg_replace("/<(i?frame.*?)>(.*?)<(\/i?frame.*?)>/si","",$str); //过滤frame标签
$str=preg_replace("/<(\/?i?frame.*?)>/si","",$str); //过滤frame标签
$str=preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si","",$str); //过滤script标签
$str=preg_replace("/<(\/?script.*?)>/si","",$str); //过滤script标签
$str=preg_replace("/javascript/si","Javascript",$str); //过滤script标签
$str=preg_replace("/vbscript/si","Vbscript",$str); //过滤script标签
$str=preg_replace("/on([a-z]+)\s*=/si","On\\1=",$str); //过滤script标签
$str=preg_replace("//si","&#",$str); //过滤script标签,如javAsCript:alert(
清除空格,换行
function DeleteHtml($str)
{
$str = trim($str);
$str = strip_tags($str,"");
$str = ereg_replace("\t","",$str);
$str = ereg_replace("\r\n","",$str);
$str = ereg_replace("\r","",$str);
$str = ereg_replace("\n","",$str);
$str = ereg_replace(" "," ",$str);
return trim($str);
}
过滤HTML属性
1,过滤所有html标签的正则表达式:
复制代码 代码如下:
</?[^>]+>
//过滤所有html标签的属性的正则表达式:
$html = preg_replace("/<([a-zA-Z]+)[^>]*>/","<\\1>",$html);
3,过滤部分html标签的正则表达式的排除式(比如排除<p>,即不过滤<p>):
复制代码 代码如下:
</?[^pP/>]+>
4,过滤部分html标签的正则表达式的枚举式(比如需要过滤<a><p><b>等):
复制代码 代码如下:
</?[aApPbB][^>]*>
5,过滤部分html标签的属性的正则表达式的排除式(比如排除alt属性,即不过滤alt属性):
复制代码 代码如下:
\s(?!alt)[a-zA-Z]+=[^\s]*
6,过滤部分html标签的属性的正则表达式的枚举式(比如alt属性):
复制代码 代码如下:
(\s)alt=[^\s]*
E. php中数据过滤的问题
我来解释一下吧
preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string);
去掉控制字符,你google一下ascii table就知道了,php里面 - 代表范围,比如\x00-\x08指的是ASCII代码在\x00到\x08范围的字符,\x0A和\x0D代表回车换行,所以没包含在这个里面,否则直接\x00-\x1F了,
$string = str_replace(array("\0","%00","\r"),'',$string);
\0表示ASCII 0x00的字符,通常作为字符串结束标志
$string = preg_replace("/&(?!(#[0-9]+|[a-z]+);)/si",'&',$string);
我们知道HTML里面可以用xx;来对一些字符进行编码,比如 (空格), ߷ Unicode字符等,A(?!B) 表示的是A后面不是B,所以作者想保留 ߷类似的 HTML编码字符,去掉其他的问题字符,比如 &123; nbsp;
str_replace(array("%3C",'<'),'<',$string);
第一个'<'多余吧,%3C是编码以后的 <, 一般用在URL编码里
str_replace(array("%3E",'>'),'>',$string);
str_replace(array('"',"'","\t",' '),array('"',"'",'',''),$string);
略过
有问题再追问
F. 网站建设用php做,如何过滤非法字符
php网站建设过滤非法字符串方法很多,下面是一个函数,你看看那,用户发布的html,过滤危险代码
functionuh($str)
{
$farr=array(
"/s+/",//过滤多余的空白
"/<(/?)(script|i?frame|style|html|body|title|link|meta|?|%)([^>]*?)>/isU",//过滤<script等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<object的过滤
"/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU",//过滤javascript的on事件
);
$tarr=array(
"",
"<123>",//如果要直接清除不安全的标签,这里可以留空
"12",
);
$str=preg_replace($farr,$tarr,$str);
return;
}