PHP CMS采集分页文章时相对路径问题解决方案

PHP CMS采集分页文章时相对路径问题解决方案


今天做php后台的时候,发现DEDE采集文章分页时的一个bug。
正好今天晚上事情不多,这个小问题也勾起了我程序的职业兴趣。索性开两瓶啤酒,就一盘花生米,一边喝着小酒,一边debug DEDE的代码,最后把这个问题的根源找到并且解决了。


问题描述:

当采集目标文章中分页信息是绝对路径时(如 http://www.gudmama.com/a/zhunbeihuaiyun/20120215/31847.html)DEDE可以正确采集。
当采集目标文章中分页信息是相对路径,但是以 '/'开头(如 /a/zhunbeihuaiyun/20120215/31847.html)DEDE也可以正确采集。
当采集目标文章中分页信息是相对路径,但不是以 '/'开头(如 a/zhunbeihuaiyun/20120215/31847.html)DEDE就不能正确采集了。


解决方案:

问题的根源出在 dedehtml2.class.php 中的 FillUrl 函数上。
大概在394行左右:

            if( strlen($surl) < 7 )
            {
                $okurl = $this->BaseUrlPath.'/'.$surl;
            }
            else if( strtolower(substr($surl,0,7))=='http://' )
            {
                $okurl = preg_replace('/^http:\/\//i', '', $surl);
            }
            else
            {
                //$okurl = $this->BaseUrlPath.'/'.$surl;  
                $okurl = $this->HomeUrl.'/'.$surl; //gudmama.com fixed the issue on 2012/03/01
            }
            
被注释掉的代码是原始的,后面一行是我加上去fix这个问题的。
稍微懂点程序的明眼人一看,就知道原始的程序肯定有问题,第一个if 和最后一个else里面的代码是一样的。
这样肯定没有意义。不知道dede的程序员是怎么review代码的。
今天算义务打工一次,帮dede fix了这个问题。希望能给遇到同样问题的站长提供帮助。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值