无法在foreach循环中使用类方法 - php
我编写了具有方法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也使用卷曲...
我认为你应该修剪()的网址,并应该解决问题。
确定如此不确定... ur编辑“协议http不支持或禁用libcurl”..什么时候出现?如果它出现时,你的请求从饲料循环..有可能是网址有一些额外的东西,它无法看到..给它一个尝试..否则..这是没有理由发生的方式是发生..也很好发送显式curl_close($ ch);请求完成后 – 2009-10-03 23:59:06
Sab - 我想我欠你一个道歉:)虽然我怀疑修剪()解决方案,它的工作就像一个魅力! - 尊重! – 2009-10-04 00:02:59
我很高兴它为你工作:) – 2009-10-04 00:06:07
你试过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