无法获取类方法在foreach循环中工作 - php

时间:2009-10-03 23:14:41

标签: php oop curl feedparser

我写了一个类Link,它有一个方法shortTolong(),它应该通过返回'location'响应头来返回缩短的url的真实URL。我测试了它,它工作正常 这是代码

public function shortTolong()
    {
        $urlMatch = array();
        $ch = curl_init();

        $options = array
        (
            CURLOPT_URL=>$this->getUrl(),
            CURLOPT_HEADER=>true,
            CURLOPT_RETURNTRANSFER=>true,
            CURLOPT_FOLLOWLOCATION=>false,
            CURLOPT_NOBODY=>true);
        curl_setopt_array($ch, $options);
        $server_output = curl_exec($ch);
        preg_match_all(LINK, $server_output,&$urlMatch,PREG_SET_ORDER);
        if($urlMatch)
        {
            foreach($urlMatch as $set)
            {
                $extracted_url = $set[2].'://'.$set[3];
            }
            return $extracted_url;
        }
        else
        {
            return $this->getUrl();
        }
    }

当我尝试在其他文件上使用此方法时,问题就开始了,该文件使用FeedParser来获取包含此简短网址的供稿条目,我需要根据某些原因进行分析,结果是短网址而非长网格代码:

foreach($parser->getItems() as $item)
{
    $idpreg = '/\d+/';
    preg_match_all($idpreg, $item['ID'],$statusid);
    $retweetid = ($statusid[0][1]);
    $datetime = $item['PUBLISHED'];
    $user = $item['AUTHOR']['NAME'];
    preg_match_all(LINK, $item['TITLE'], &$linkMatch);
    $final = $linkMatch[0][0];
    //if($linkMatch[0][0])
        echo '<p>';
        $link = new Link($final);
        echo $link->getUrl();
        echo '<br>';
        echo $link->shortTolong();
        echo '<br>';
        echo $user;
        echo '<br>';
        echo $retweetid;
        echo '</p>';


}

由于某些原因,我得到了getUrl()和shortTolong()的相同结果,我知道这是一个错误。

为什么会发生这种情况的任何想法? 感谢

编辑 - 我使用curl_eror向方法添加了错误通知 我收到此错误消息:“libcurl中不支持或禁用协议http” 正如我所说,我测试了这种方法并且它在同一环境中工作正常(没有变化)我怀疑它与使用curl的FeedParser有关......

1 个答案:

答案 0 :(得分:1)

我认为你应该修剪()网址,这应该解决问题。