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 相关文章推荐
?生?D片??C字串
Dec 06 PHP
PHP 防注入函数(格式化数据)
Aug 08 PHP
linux iconv方法的使用
Oct 01 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
php中smarty区域循环的方法
Jun 11 PHP
php数组函数array_key_exists()小结
Dec 10 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP长连接实现与使用方法详解
Feb 11 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中的常用函数回顾
2013/07/11 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
php中的异常和错误浅析
2017/05/03 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
中止javascript执行的方法
2014/02/14 Javascript
jquery禁用右键示例
2014/04/28 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
详细介绍Python中的偏函数
2015/04/27 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
python如何为创建大量实例节省内存
2018/03/20 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
财务部出纳岗位职责
2013/12/22 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
书法大赛策划方案
2014/06/04 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
通知格式
2015/04/27 职场文书