过滤HTML标签的几个if函数的使用方法嵌套

PHP常用函数:过滤HTML字符串
稿源:中国站长站综合
&?php /******************************************************************** * 原文件名:Filter1.php * 文件说明:过滤HTML字符串 * 文件编写: * 流程说明: * 当附合要求的参数传递进filter函数后,filter()函数首先 * 把要字串中所有要过滤的标签$tag通过preg_match_all() * 取出来,然后循环preg_match_all的匹配数组,通过preg_split() * 函数分割每个标签为 &左边属性& = &右边值&的形式,再从要保 * 留的属性数组中循环,将preg_split()匹配的内容对应取出,构成 * 可以替换的值,后最通过str_replcae()替换掉字串中相应的标签 * 函数列表: * function filter(&$str,$tag,$keep_attribute) * function match($reg,&$str,$arr) * function show($str,$title='',$debug = True) * 使用示例: * //取得搜狐新闻首页 * $str = @file_get_content(&http://news.sohu.com&); * //过滤 * filter($str,'a','href,target,alt'); * filter($str,'p','align'); * show($str,'过滤后的内容'); ********************************************************************/ $start_time = array_sum(explode(& &,microtime())); $str = &&& HTML &A style=&a& target=_blank href='http://www.a.com' xxx=xadsfa alt=&a a a& style=&aa&&site a&/A& &A alt='b b b' xxx=xadsfa target=_blank href='http://www.b.com' style=&b& style=&bb&&site b&/A& &A xxx=xadsfa style=&c& href='http://www.c.com' target=_blank alt=c c c style=&cc&&site c&/A& &A style=&d& href='http://www.d.com' xxx=xadsfa alt=d d d target=_blank style=&dd&&site d&/A& &A target=_blank style=&e& xxx=xadsfa style=&ee& alt=e e e href='http://www.e.com'&site e&/A& &p align=right style=&font-size:10px&&adasdfasdf&/p& &p style=&font-color:& align='left'&asdfasdfasdfasdf&/p& &p align=left right center&asdfasdfasdf&/p& &font color=&red& alt=adasd adsasd&asdfadsfasdf&/font& &font align='left' color=red&asdfasdfadf&/font& &font align=left right color=red black&asdfasdf&/font& HTML; //显示原字串 show($str,'Html'); /***********************************************************************************************************************************************************************/ //过滤 filter($str,'a','href,target,alt'); filter($str,'p','align'); filter($str,'font','color,alt'); //显示过滤后的内容 show($str,'Result'); //脚本运行时间 $run_time = array_sum(explode(& &,microtime())) - $start_ echo('&center&Script Run Time: '.$run_time.'&/center&'); /** * 说明:过滤HTML字串 * 参数: * $str : 要过滤的HTML字串 * $tag : 过滤的标签类型 * $keep_attribute : * 要保留的属性,此参数形式可为 * href * href,target,alt * array('href','target','alt') */ function filter(&$str,$tag,$keep_attribute) { //检查要保留的属性的参数传递方式 if(!is_array($keep_attribute)) { //没有传递数组进来时判断参数是否包含,号 if(strpos($keep_attribute,',')) { //包含,号时,切分参数串为数组 $keep_attribute = explode(',',$keep_attribute); }else { //纯字串,构造数组 $keep_attribute = array($keep_attribute); } } echo(&&过滤[$tag]标签,保留属性:&.implode(',',$keep_attribute).'&br&'); //取得所有要处理的标记 $pattern = &/&$tag(.*)&\/$tag&/i&; preg_match_all($pattern,$str,$out); //循环处理每个标记 foreach($out[1] as $key =& $val) { //取得a标记中有几个= $cnt = preg_split('/ *=/i',$val); $cnt = count($cnt) -1; //构造匹配正则 $pattern = ''; for($i=1; $i&=$ $i++) { $pattern .= '( .*=.*)'; } //完成正则表达式形成,如/(&a)( .*=.*)( .*=.*)(&.*&\/a&/i的样式 $pattern = &/(&$tag)$pattern(&.*&\/$tag&)/i&; //取得保留属性 $replacement = match($pattern,$out[0][$key],$keep_attribute); //替换 $str = str_replace($out[0][$key],$replacement,$str); } } /** * 说明:构造标签,保留要保留的属性 * 参数:$reg : pattern,preg_match的表达式 * $str : string,html字串 * $arr : array,要保留的属性 * 返回: * 返回经保留处理后的标签,如 * &A href='http://www.e.com' target=_blank alt=e e e&e.com&/A& */ function match($reg,&$str,$arr) { //match preg_match($reg,$str,$out); //取出保留的属性 $keep_attribute = ''; foreach($arr as $k1=&$v1) { //定义的要保留的属性的数组 foreach($out as $k2=&$v2) { //匹配=后的数组 $attribute = trim(substr($v2,0,strpos($v2,'='))); //=前面的 if($v1 == $attribute) { //要保留的属性和匹配的值的=前的部分相同 $keep_attribute .= $v2; //保存此匹配部分的值 } } } //构造返回值,结构如:&a href=xxx target=xxx class=xxx&aadd&/a& $keep_attribute = $out[1].$keep_attribute.($out[count($out)-1]); //返回值 Return $keep_ } /** * 显示字串内容 */ function show($str,$title='',$debug = True) { if($debug) { if(is_array($str)) { $str = print_r($str,True); } $txtRows = count(explode(&\n&,$str))+1; echo($title.':&br&&TEXTAREA NAME=&txt& ROWS=&'.$txtRows.'& COLS=&130&&'.$str.'&/TEXTAREA&&br&&br&'); } } ?&
有好的文章希望站长之家帮助分享推广,猛戳这里
本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页我的定位:中高级人才(框架熟练、Java语法精通、数据库会用、Linux会用、中间件会用)...
PHP 过滤html标签的函数
PHP过滤html标签竟然有内部的函数可用,相对于asp来说简直是太强大了。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&");
php 过滤掉html标签及标签内的所有内容
php 使用htmlspecialchars() 和strip_tags函数过滤HTML标签的区别
php 删除字符串中html标签
php过滤html(php过滤html函数)
php使用strip_tags从字符串中去除html标记
php过滤html标签正则表达式
php ---- 过滤 html 标签
php正则过滤html标签
【PHP】富文本HTML过滤器:HTMLPurifier使用教程(防止XSS)
php 去除html标签 和 css样式
没有更多推荐了,过滤危险html代码的函数怎么用_百度知道
过滤危险html代码的函数怎么用
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
需要写入数据库字符通面滤再写入 public static String converthtml(String input) { if (input == null || input.length() == 0) { } StringBuffer buf = new StringBuffer(input.length() + 陆); char ch = ' '; for (int i = 0; i & input.length(); i++) { ch = input.charAt(i); if (ch == '&') { buf.append(&&&); } else if (ch == '&') { buf.append(&') { buf.append(&&&); } else if (ch == ' ') { buf.append(& &); } else { buf.append(ch); } } return buf.toString(); } 希望采
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。ASP函数之清除字符中HTML标签
我的图书馆
ASP函数之清除字符中HTML标签
以下为代码
Function delHtml(strHtml) '做了一个函数名叫delhtml
&Dim objRegExp, strOutput
&Set objRegExp = New Regexp ' 建立正则表达式
&objRegExp.IgnoreCase = True ' 设置是否区分大小写
&objRegExp.Global = True '是匹配所有字符串还是只是第一个
&objRegExp.Pattern = "(&[a-zA-Z].*?&)|(&[\/][a-zA-Z].*?&)" ' 设置模式引号中的是正则表达式,用来找出html标签
&strOutput = objRegExp.Replace(strHtml, "") '将html标签去掉
&strOutput = Replace(strOutput, "&", "&") '防止非html标签不显示
&strOutput = Replace(strOutput, "&", "&")
&delHtml = strOutput
&Set objRegExp = Nothing
End Function
调用示例(注意看加红的那段代码):
&%&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&& sql="select * from about where sortid=3"
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& set rs=conn.execute(sql)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if not rs.eof then
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if rs("picurl")&&"" then&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& response.write "&div class='gs'&&img src='"&mid(rs("picurl"),4)&"' style='float:margin-right:10'/&&/div&"&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& end if
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& response.write left(delhtml(rs("body")),195)&"..."&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& response.write "暂无信息!"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& end if
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& rs.close
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& set rs=nothing&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& %&
这样会把str里的HTML格式去掉,适用于某个地方只显示某一部分字符,以避免打乱整个网页的布局。因为直接取前几十个字符的话,会把HTML格式破坏掉,所以也会连累到整个网页。&
文章来自: ASP技术网站() 详文参考:
[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢php 使用htmlspecialchars() 和strip_tags函数过滤HTML标签的区别
原文地址:http://www.manongjc.com/article/1103.html
先来看一下函数和函数的使用实例:
$str="&a href='http://www.manongjc.com'&码农教程'\"&/a&";
echo htmlspecialchars($str);
echo "&br/&&br/&";
echo strip_tags($str);
?&浏览器输出如下结果:
&a href='http://www.manongjc.com'&码农教程'"&/a&
码农教程'"查看页面源码,结果如下:
&a href='http://www.manongjc.com'&码农教程'"&/a&&br/&&br/&码农教程'"
从结果可以看出和的区别如下:
使用来去除HTML标签的,而并没有去除html标签,只是把标签转换为HTML实例,所以二者之间最大的区别是一个是删除掉HTML标签,一个是将html标签转换为其他字符。
如果需要去除的字符串里面的标签原来就有错,例如少了大于的符号,在使用strip_tags函数会传回错误,而htmlspecialchars不会有错误出现,依然后转换为HTML实体。
在防止XSS攻击时,一般建议使用,因为虽然可以删除标签,但是它不会删除"或'。因此就算你使用了,仍然需要使用函数来过滤掉"或'
在表单提交或用户留言板里,如果你希望数据原始输出带浏览器,那么请使用htmlspecialchars函数,不要使用函数。
参考阅读:
http://www.manongjc.com/article/1213.html
http://www.manongjc.com/article/1099.html
http://www.manongjc.com/article/795.html
php删除所有的HTML标签,除去P标签
php使用strip_tags从字符串中去除html标记
PHP 过滤html标签的函数
PHP删除HTMl标签的三种解决方法
PHP 去除多余的HTML标签
php清除html标签,除空格和换行
PHP如何去除HTML标签
php 删除字符串中html标签
没有更多推荐了,}

我要回帖

更多关于 excel函数公式大全 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信