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 相关文章推荐
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
php安全配置 如何配置使其更安全
Dec 16 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
PHP工程师VIM配置分享
Dec 15 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
PHP Class SoapClient not found解决方法
Jan 20 PHP
php使用event扩展的io复用测试的示例
Oct 20 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
详解PyTorch批训练及优化器比较
2018/04/28 Python
python3实现windows下同名进程监控
2018/06/21 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
python轮询机制控制led实例
2020/05/03 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Servlet方面面试题
2016/09/28 面试题
物流管理专业毕业生求职信
2014/03/23 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
事业单位年度考核评语
2014/12/31 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python