实例一
php有效的过滤html标签,js代码,css样式标签:
<?php $str = preg_replace( "@<script(.*?)</script>@is", "", $str ); $str = preg_replace( "@<iframe(.*?)</iframe>@is", "", $str ); $str = preg_replace( "@<style(.*?)</style>@is", "", $str ); $str = preg_replace( "@<(.*?)>@is", "", $str ); ?>
,全是正则过滤HTML标签,但是今天自己拿来用都不好用了.原因??就是标签转义了.比如<br >.页面上显示的是这个.但是源文件却显示的像这样:”——但是我们还是可以处理,先把内容全部反编译过来.再过滤就行了.
$str= htmlspecialchars_decode($str);
用htmlspecialchars_decode这个函数的就是把源文件转成<>这样的标签.然后”:
$str= preg_replace("/<(.*?)>/","",$str);
实例二
php自带的函数可以去除/删除字符串中的HTML标签/代码。
strip_tags(string,allow):函数剥去 HTML、XML 以及 PHP 的标签。
参数:string,必填,规定要检查的字符串;allow,选填,规定允许存在的标签,这些标签不会被删除。
$str = '郭碗瓢盆-<span style="color:#f00;">PHP</span>'; $str1 = strip_tags($str); // 删除所有HTML标签 $str2 = strip_tags($str,'<span>'); // 保留 <span>标签 echo $str1; // 输出 郭碗瓢盆-PHP echo $str2; // 样式不一样喔
例2、清除HTML标签字符串中某些属性代码
使用PHP处理从数据库中读取的文章HTML代码,然后用正则对代码进行匹配与修改,保存代码以后,用静态生成功能即可生成修改后的HTML页面了。
因为我们生成的代码是已经处理过的代码,所以就不会影响HTML页面的加载速度了。
具体 [示例代码]如下:
<?php $str = "<img src="" width="245" height="138" onclick="window.open('xxxx.gif')" />"; $str = preg_replace('#onclick=([sS]*)"#','',$str); // #符号前面有一个双引号要注意,代表结束的代码 print($str); ?>
实例三
$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]*
实例四
语法:strip_tags(string,allow);
string必需,规定要检查的字符串。
allow可选,规定允许的标签,这些标签不会被删除。
注释:该函数始终会剥离HTML注释,这点无法通过allow参数改变。
实例:
<?php $str = "Hello <b><i>world</i></b>!"; echo strip_tags($str); echo '<br />'; echo strip_tags($str, '<b><i>'); ?>
输出结果:
Hello world! Hello world!
实例五
strip_tags 去掉 HTML 及 PHP 的标记。 语法: string strip_tags(string str); 传回值: 字串 函式种类: 资料处理 内容说明 本函式可去掉字串中包含的任何 HTML 及 PHP 的标记字串。若是字串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会传回错误。而本函式和 fgetss() 有着相同的功能。
htmlspecialchars 将特殊字元转成 HTML 格式。 语法: string htmlspecialchars(string string); 传回值: 字串 函式种类: 资料处理 本函式将特殊字元转成 HTML 的字串格式 ( &....; )。最常用到的场合可能就是处理客户留言的留言版了。 & (和) 转成 & " (双引号) 转成 " < (小于) 转成 < > (大于) 转成 > '' (单引号) 转成 ' 此函式只转换上面的特殊字元,并不会全部转换成 HTML 所定的 ASCII 转换。
<?php $new = htmlspecialchars( "<a href='test'>Test</a>" , ENT_QUOTES); echo $new ; ?>
结果:
<a href='test'>Test</a>