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调用Java对象的方法
Oct 09 PHP
PHP通过COM使用ADODB的简单例子
Dec 31 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
php递归创建和删除文件夹的代码小结
Apr 13 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
destoon找回管理员密码的方法
Jun 21 PHP
ThinkPHP3.2.1图片验证码实现方法
Aug 19 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 PHP
php 原生分页
Apr 01 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
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
PHP中cookie知识点学习
2018/05/06 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
深入探究node之Transform
2017/07/20 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
python使用PyQt5的简单方法
2019/02/27 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
检讨书范文500字
2015/01/28 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书