php中html字符串过滤函数详解

自定义的一个函数

 代码如下 复制代码

function StripHTML($string){
 $pattern=array ("'<script[^>]*?>.*?</script>'si", "'<style[^>]*?>.*?</style>'si",  "'<[/!]*?[^<>]*?>'si",  "'([rn])[s]+'",  "'&(quot|#34);'i",  "'&(amp|#38);'i",  "'&(lt|#60);'i",  "'&(gt|#62);'i",  "'&(nbsp|#160);'i",  "'&(iexcl|#161);'i",  "'&(cent|#162);'i",  "'&(pound|#163);'i",  "'&(copy|#169);'i",  "'&#(d+);'e");
 $replace=array ('', '', "\1", '', "&", "<", ">", ' ', chr(161), chr(162), chr(163), chr(169), "chr(\1)");
 return preg_replace ($pattern, $replace, $str);
}

除了上面自定的函数之外还有一个php自带的过滤html的函数:strip_tags(string) 这样就可以过滤掉所有的html标签了。

如果想过滤掉除了<img src="">之外的所有html标签,则可以这样写:

 代码如下 复制代码

strip_tags(string,"<img>");

过滤除了<img src=""><p>xxx</p><b></b>之外的所有html标签,则可以这样写:

 代码如下 复制代码

strip_tags(string,"<img><p><b>");

网上找到一个防sql注入函数

 代码如下 复制代码

//php 批量过滤post,get敏感数据
if (get_magic_quotes_gpc()) {
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
}

function stripslashes_array(&$array) {
while(list($key,$var) = each($array)) {
if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || ''.intval($key) == "$key")) {
if (is_string($var)) {
$array[$key] = stripslashes($var);
}
if (is_array($var))  {
$array[$key] = stripslashes_array($var);
}
}
}
return $array;
}
         //--------------------------

// 替换HTML尾标签,为过滤服务 www.111cn.net
//--------------------------
function lib_replace_end_tag($str)
{
if (empty($str)) return false;
$str = htmlspecialchars($str);
$str = str_replace( '/', "", $str);
$str = str_replace("\", "", $str);
$str = str_replace("&gt", "", $str);
$str = str_replace("&lt", "", $str);
$str = str_replace("<SCRIPT>", "", $str);
$str = str_replace("</SCRIPT>", "", $str);
$str = str_replace("<script>", "", $str);
$str = str_replace("</script>", "", $str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("    ",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("<br />",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str);
$str=str_replace("CSS","'",$str);

return $str;

}

使用方法

 代码如下 复制代码

引用是直接这样:
$xxx = htmlspecialchars($_POST['xxx']);
或者
$xxx = htmlspecialchars($_GET['xxx']);

时间: 2024-10-26 22:06:18

php中html字符串过滤函数详解的相关文章

jQuery3.0中的buildFragment私有函数详解_jquery

时隔 3 个月,jQuery 团队终于发布了 3.0 Alpha 版本.有两个版本 jQuery compat 3.0 和 jQuery 3.0. jQuery compat 3.0 对应之前的 1.x, 兼容更多的浏览器,对于IE支持到 8.0 版本 jQuery 3.0 对应之前的 2.x,关注更新的浏览器,对于IE支持到 9.0 版本 此外, 3.0还增加了对 Yandex 浏览器的支持,一款来自俄罗斯的浏览器. 下面看下jQuery3.0中的buildFragment. 在 jQuery

关于PHP内置的字符串处理函数详解

字符串的特点 1.  其他类型的数据用在字符串类型处理函数中,会自动将其转化成字符串后,在处理 <?php echo substr("abcdefghijklmn",2,4),"<br>"; //cdef //使用数字会自动转化为字符串 echo substr(123456,2,4); //3456 ?> 2. 可以将字符串视为数组,当做字符集合来看待 <?php $str="abcdefg"; //下面这两种方法都

c语言中字符串处理函数详解

C语言提供了丰富的字符串处理函数,例如字符串的输入.输出.合并.修改.比较.转换.复制.搜索等,使用这些现成的函数可大大减轻编程的负担. 用于输入输出的字符串函数,例如printf.puts.scanf.gets等,使用时应包含头文件stdio.h,使用其它字符串函数则应包含头文件string.h. 1.字符串长度函数strlen strlen 是 string length 的缩写,用来获得字符串的长度.所谓长度,就是包含多少个字符(不包括字符串结束标志 '\0').语法格式为: strlen

Java 中的字符串常量池详解_java

Java中的字符串常量池 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式.然而这两种实现其实存在着一些性能和内存占用的差别.这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池.

php截取字符串长度函数详解

常用的字符处理函数  代码如下 复制代码 strstr(string,string) = strchr(,) //从前面第一次出现某个字符串的地方截取到最后 strrchr(string,string) //从某个字符串从最后出现的位置截取到结尾 strpos(string,string[,int]) //某个字符串第一次出现的位置 strrpos(string,string) //某个字符串最后一次出现的位置 substr(string,int[,int]) //从指定位置开始截取字符串,可以

PHP中strtr字符串替换用法详解_php技巧

本文实例讲述了PHP中strtr字符串替换用法.分享给大家供大家参考.具体分析如下: strtr(string,from,to)或者strtr(string,array) 首先针对strtr函数第一种方式,我们看看下面的举例,代码如下: 复制代码 代码如下: <?php echo strtr("I Love you","Lo","lO"); ?> 得到的结果是: 1 I lOve yOu 这个结果提醒我们,1.strtr它是区分大小写

js 字符串长度函数详解介绍

我们只要使用  代码如下 复制代码 var str = "465464656464566"; var strLength = str.length; 例1  代码如下 复制代码 <script type="text/javascript"> var vText="I like www.111cn.net" document.write("<p>" + vText + "</p>&q

mysql中时间和日期函数详解(1/3)

一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now()  代码如下 复制代码 mysql> select now(); +–-------+ | now() | +–-------+ | 2008-08-08 22:20:46 | +–-------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:  代码如下 复制代码 current_timestamp() ,current_timestamp ,localt

百度主题推广中竞争网站过滤功能详解

"竞争网站过滤"是一个屏蔽竞争对手广告.提升广告与页面相关度的有效方法.正确使用竞争网站过滤可以帮助您协调好主题推广与您站点之间的匹配关系,从而使得该功能成为深受站长欢迎的优化手段.但过多使用进而过滤过多广告就会对站点的收益造成一定影响,建议站长合理使用. 我们将从以下4个方面为大家介绍主题推广的"竞争网站过滤".如果您尚未使用过该功能就请尝试一下吧. "竞争网站过滤"的用途 "竞争网站过滤"的弊端 "竞争网站过滤&