不得不说正则是个十分强大的功能,有了他,让我们处理一些复杂的字符变的得心应手。其实所谓的程序无非都是对字符的处理,我之前也提到过,无非都是对字符的操作,所以,会了正则,会让你在做程序开发时多了一条很便捷的途径。这里我其实也用到了用正则匹配文章中的url,进行提取域名。
因为有很多网站的文章都是拷贝的各个其他网站上的,所以有的时候里面会有一些导出链接,可能会影响网站的权重,所以,我们要对发布的文章进行一下过滤。我在这里以织梦的文章发布为例来做的。因为有些链接也是不能过滤的,比如一些自己网站的链接,或一些自己必要的外部链接。所以,我们用正则匹配文章中的url,然后提取出域名,根据域名判断是否要替换,我们可以将外部链接的链接去掉,也就是将a标签去掉。而只留下之间的部分就可以了。下面看一下代码。
//过滤文章中除指定域名之外的链接
$pre = '|<a[^>]*?\s*href=\\\"(?:.*?)\.(.*?)\.(?:.*?)/(?:.*?)\"(?:.*?)>(.*?)<\/a>|i';
preg_match_all($pre,$body,$a);
if($a){
$qian = $a[0];
$home = $a[1];
$hou = $a[2];
foreach ($home as $key=>$val){
if($val=='beelink'||$val=='zoosnet'){
continue;
}else{
$body = str_replace($qian[$key],$hou[$key],$body);
}
}
}
将这段代码加到织梦的文章发布处理文件article_add.php的$body = AnalyseHtmlBody($body,$description,$litpic,$keywords,’htmltext’);提取摘要之前就可以了。这里面用到了正则的断言。来屏蔽了一些不必要的匹配。这个正则匹配出来三部分,第一部分是整个链接,第二部分是域名,第三部分是去掉a标签后的部分。所以我们遍历第二部分,是指定的可以发布的域名就结束本次循环,如果不是,就将对应的第一部分替换为对应的第三部分。替换因为不是复杂的匹配,所以用php自带的替换就可以了,正则虽然很方便,但是他比较耗费资源,如果可以,尽量使用php正则匹配等级域名网址自带的函数来操作。这样就可以实现将一些外部链接替换掉了!
网站地图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论