过滤链接最简单的办法就是利用php教程的strip_tags函数,如下
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>");
上面的做法不可取,因为它把所有的html都给过滤了,下面我们只要过滤连接部份。
<?php
echo preg_replace("/(?<=href=)([^>]*)(?=>)/i","#", "<a href='www.111cn.net'>你好,点这里看看</a><a href='www.111cn.net'>你好,点这里看看</a>");
?>
正则:/(?<=href=)([^>]*)(?=>)/
(?<=exp) 匹配exp后面的位置
(?=exp) 匹配exp前面的位置
此正则 匹配 在 href= 之后 “>” 之前 的 非 “>” 的所有字符
例子:<a href='www.111cn.net '>
升级一下,我们只过滤其它网站的链接保存自己网站的
$str ='<li><a href="http://www.111cn.net/12345s" target="_blank"> 施华洛世奇!</a></li><li><a href=http://123.com/n.php?a=luxury& target="_blank"> f乔</a></li><li><a href="http://mb.111cn.net/" target="_blank"> f衣';
$match='/<li><ashref="?http://[w.]*123.com/[w]+.php?a=*[w&=]*"?s+target="_blank">(.*)</a></li>/isu';
preg_match_all($match,$str,$arr);
echo "<pre>";
print_r($arr[0]);
echo "</pre>";
更多详细内容请查看:http://www.111cn.net/phper/php/35063.htm