去除外部链接

 

一、问题:去除文章中的外部链接。

 

二、基本思路:

1、获取本站域名网址;

2、本站域名网址换为字符串替换,我用#basehost#替换本站域名网址;

3、用正则式过滤外部链接;

4、字符串还原本站链接域名网址。

 

三、实现代码。

下面我的是实现代码:

//获取本站域名网址

$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'news.chongwen.com');

$basehost = "http://".$host;

//本站域名网址转换为字符串

$body = str_replace($basehost,'#basehost#',$body);

//正则式过滤所有<a>的链接

$body = preg_replace("/(<a[ /t/r/n]{1,}href=[/"']{0,}(http:[^//]|mailto:|[/.//]*/w)([^>]*)>)|(<//a>)/isU","",$body);

//还原本站网址链接

$body = str_replace('#basehost#',$basehost,$body);

 

这可以用函数封装:

delLink($body)

{

//获取本站域名网址

$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'news.chongwen.com');

$basehost = "http://".$host;

//本站域名网址转换为字符串

$body = str_replace($basehost,'#basehost#',$body);

//正则式过滤所有<a>的链接

$body = preg_replace("/(<a[ /t/r/n]{1,}href=[/"']{0,}(http:[^//]|mailto:|[/.//]*/w)([^>]*)>)|(<//a>)/isU","",$body);

//还原本站网址链接

$body = str_replace('#basehost#',$basehost,$body);

Return ($body);

}

 

四、存在的问题:

  这存在个问题是如果是用本站的相对链接也会把过滤掉,目前想到的方法是把本站的相对链接全换为绝对链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值