string strip_tags ( string str [, string allowable_tags] )
弊端 :
这个函数只能保留想要的html标签,就是参数string allowable_tags。
在yizero的评论中我知道了这个函数的参数allowable_tags的其他的用法。
代码如下 | 复制代码 |
strip_tags($source, ”); 去掉所以的html标签。 strip_tags($source, ‘
’); 保留字符串中的div、img、em标签。
|
如果想去掉的html的指定标签。那么这个函数就不能满足需求了。于是乎我用到了这个函数。
代码如下 | 复制代码 |
/** * 删除指定的HTML标签及其中内容,暂时只支持单标签清理 * * @param string $string -- 要处理的字符串 * @param string $tagname -- 要删除的标签名称 * @param boolean $clear -- 是否删除标签内容 * @return string -- 返回处理完的字符串 */ function replace_html_tag($string, $tagname, $clear = false){ $re = $clear ? '' : '1'; $sc = '/]*)?>([sS]*?)?' . $tagname . '>/i'; return preg_replace($sc, $re, $string); } |
以下是测试代码
代码如下 | 复制代码 |
// 百度首页内容 $string = file_get_contents('http://www.phprm.com/'); // 去掉 style 及包含内容 // 去掉 a 标签,并保存其中内容 // 去掉 span 标签,并保存其中内容 echo $string; |
如果我们要删除指定两者之间的数据
代码如下 | 复制代码 |
/** * PHP去掉特定的html标签 * @param array $string * @param bool $str * @return string */ function _strip_tags($tagsArr,$str) { foreach ($tagsArr as $tag) { $p[]="/(]*>)/i"; } $return_str = preg_replace($p,"",$str); return $return_str; } $str = "您好百度一下,你就知道"; echo _strip_tags(array("b", "input", "a"),$str); #去掉 B 标签和 INPUT 标签 ?> |