PHP实现删除非站内外部链接实例代码


Posted in PHP onJune 17, 2014

一般在做网站系统的时候,出于优化等因素的考虑需要再添加文章的时候删除掉不是本站的链接,对于这一要求可以通过让PHP处理下文章内容,来达到文章外部链接的自动删除的效果。

本实例代码主要参考织梦CMS内容管理系统的外链删除方法。

/**
 *  删除非站内链接
 *
 * @access    public
 * @param     string  $body  内容
 * @param     array  $allow_urls  允许的超链接
 * @return    string
 */
function Replace_Links( &$body, $allow_urls=array()  )
{
    $host_rule = join('|', $allow_urls);
    $host_rule = preg_replace("#[\n\r]#", '', $host_rule);
    $host_rule = str_replace('.', "\\.", $host_rule);
    $host_rule = str_replace('/', "\\/", $host_rule);
    $arr = '';
    preg_match_all("#<a([^>]*)>(.*)<\/a>#iU", $body, $arr);
    if( is_array($arr[0]) )
    {
        $rparr = array();
        $tgarr = array();
        foreach($arr[0] as $i=>$v)
        {
            if( $host_rule != '' && preg_match('#'.$host_rule.'#i', $arr[1][$i]) )
            {
                continue;
            } else {
                $rparr[] = $v;
                $tgarr[] = $arr[2][$i];
            }
        }
        if( !empty($rparr) )
        {
            $body = str_replace($rparr, $tgarr, $body);
        }
    }
    $arr = $rparr = $tgarr = '';
    return $body;
}

PHP 相关文章推荐
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
php标签云的实现代码
Oct 10 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
CodeIgniter表单验证方法实例详解
Mar 03 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 #PHP
Thinkphp中Create方法深入探究
Jun 16 #PHP
ThinkPHP中的关联模型注意点
Jun 16 #PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 #PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 #PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 #PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 #PHP
You might like
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
php实现socket推送技术的示例
2017/12/20 PHP
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
通过实例学习Python Excel操作
2020/01/06 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
python批量修改交换机密码的示例
2020/09/22 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
智能旅行箱:Horizn Studios
2018/04/30 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
幼儿园毕业典礼主持词
2014/03/21 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
法定代表人证明书
2014/11/28 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
MySQL为id选择合适的数据类型
2021/06/07 MySQL