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与XML的PDF文档生成技术
Oct 09 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
php 删除一个数组中的某个值.兼容多维数组!
Feb 18 PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
PDO操作MySQL的基础教程(推荐)
Aug 18 PHP
PHP PDOStatement::debugDumpParams讲解
Jan 30 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
php swoft框架实例用法
Dec 22 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错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
解析预加载显示图片艺术
2016/12/05 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
《陶罐和铁罐》教学反思
2014/02/19 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
法人授权委托书样本
2014/09/19 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
升学宴家长致辞
2015/07/27 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS