我編寫了具有方法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