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序列号生成函数和字符串替换函数代码
Jun 07 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
May 06 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
php查询操作实现投票功能
May 09 PHP
php网页版聊天软件实现代码
Aug 12 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
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
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
基于DataFrame改变列类型的方法
2018/07/25 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
澳大利亚相机之家:Camera House
2017/11/30 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
办公室岗位职责
2015/02/04 职场文书
内勤岗位职责
2015/02/10 职场文书
2016年母亲节广告语
2016/01/28 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python