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 相关文章推荐
PHP4在Windows2000下的安装
Oct 09 PHP
手把手教你使用DedeCms的采集的图文教程
Mar 11 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
PHP中strtotime函数使用方法详解
Nov 27 PHP
PHP编码转换
Nov 05 PHP
解析strtr函数的效率问题
Jun 26 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
PHP7 新特性详细介绍
Sep 06 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
PHP chop()函数讲解
Feb 11 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
PHP 实现链式操作
Mar 09 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 flock 文件锁详细介绍
2012/12/29 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
use jscript Create a SQL Server database
2007/06/16 Javascript
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
python的re模块应用实例
2014/09/26 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python 私有函数的实例详解
2017/09/11 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
Django中的静态文件管理过程解析
2019/08/01 Python
Python坐标线性插值应用实现
2019/11/13 Python
python实现拼接图片
2020/03/23 Python
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
社会学专业求职信
2014/07/17 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
交警失职检讨书
2015/01/26 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
为什么不建议在go项目中使用init()
2021/04/12 Golang
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS