dedecms教程之禁止织梦会员发布文章内容中带超链接修改的方法

  • A+
所属分类:DedeCms建站

织梦会员中心发布文章自动过滤外部外部链接,保留本站站内链接。这个织梦默认后台本身带有这样的功能的,只是会员模块里没有而已。

我们可以把功能嫁接到会员模块里去使用,实现自动过滤外部链接

dedecms教程之禁止织梦会员发布文章内容中带超链接修改的方法

实现教程如下:

打开 /member/inc/inc_archives_functions.php 在文件的最下面插入

  1. /**
  2.  *  删除非站内链接
  3.  *
  4.  * @access    public
  5.  * @param     string  $body  内容
  6.  * @param     array  $allow_urls  允许的超链接
  7.  * @return    string
  8.  */
  9. function Replace_Links( &$body, $allow_urls=array()  )
  10. {
  11.     $host_rule = join('|', $allow_urls);
  12.     $host_rule = preg_replace("#[nr]#"'', $host_rule);
  13.     $host_rule = str_replace('.'".", $host_rule);
  14.     $host_rule = str_replace('/', "/", $host_rule);
  15.     $arr = '';
  16.     preg_match_all("#<a([^>]*)>(.*)</a>#iU", $body, $arr);
  17.     if( is_array($arr[0]) )
  18.     {
  19.         $rparr = array();
  20.         $tgarr = array();
  21.         foreach($arr[0] as $i=>$v)
  22.         {
  23.             if( $host_rule != '' && preg_match('#'.$host_rule.'#i', $arr[1][$i]) )
  24.             {
  25.                 continue;
  26.             } else {
  27.                 $rparr[] = $v;
  28.                 $tgarr[] = $arr[2][$i];
  29.             }
  30.         }
  31.         if( !empty($rparr) )
  32.         {
  33.             $body = str_replace($rparr, $tgarr, $body);
  34.         }
  35.     }
  36.     $arr = $rparr = $tgarr = '';
  37.     return $body;
  38. }

继续在这个文件中找到,大概在329行

  1. //自动摘要

在它上面加入

  1. //删除非站内链接
  2. $allow_urls = array($_SERVER['HTTP_HOST']);
  3. // 读取允许的超链接设置
  4. if(file_exists(DEDEDATA."/admin/allowurl.txt"))
  5. {
  6.     $allow_urls = array_merge($allow_urls, file(DEDEDATA."/admin/allowurl.txt"));
  7. }
  8. $body = Replace_Links($body, $allow_urls);

如图:

dedecms教程之禁止织梦会员发布文章内容中带超链接修改的方法

  • 我的微信
  • 技术咨询
  • weinxin
  • 微信公众号
  • 营销技巧分享
  • weinxin
马找钱

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: