PHP过滤HTML字符串函数详解
来源:未知 责任编辑:责任编辑 发表时间:2013-11-15 19:50 点击:次
<?php
/********************************************************************
* 流程说明:
* 当附合要求的参数传递进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.php100.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.php100.net 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:red;" 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_time;
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>);
/********************************************************************
* 流程说明:
* 当附合要求的参数传递进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.php100.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.php100.net 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:red;" 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_time;
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>);
相关新闻>>
- 发表评论
-
- 最新评论 更多>>