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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
提升PHP执行速度全攻略(上)
Oct 09 PHP
模仿OSO的论坛(四)
Oct 09 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
php GeoIP的使用教程
Mar 09 PHP
php 中英文语言转换类代码
Aug 11 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
php开发工具有哪五款
2015/11/09 PHP
php自定义分页类完整实例
2015/12/25 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
Python 对象中的数据类型
2017/05/13 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
各营销点岗位职责范本
2014/03/05 职场文书
工作作风建设心得体会
2014/10/22 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
如何制作自己的原生JavaScript路由
2021/05/05 Javascript