我编写了具有方法shortTolong()的类Link,它应该通过返回'location'响应头来返回缩短url的实际URL。我测试了它和它的工作原理确定 这里是代码无法在foreach循环中使用类方法 - php
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 我收到此错误信息:“协议HTTP不支持或libcurl中禁用” 正如我所说的,我从测试这种方法,它的工作罚款因为独立在相同的环境(没有变化),我怀疑它与FeedParser也使用卷曲...
你试过echo $ server_output = curl_exec($ ch); ??是否打印一些输出? – 2009-10-03 23:28:15
对网址进行了修剪,看看是否有帮助。 – 2009-10-03 23:38:50
沙特阿拉伯 - 谢谢你的响应$ server_output输出URL的响应标题如预期 你能解释为什么你认为trim()会有帮助吗?正如我所说,当我在静态生成的对象上测试它时,此方法工作良好,当对象以动态方式初始化时,feedparser – 2009-10-03 23:53:49