메소드 shortTolong()이있는 Link 클래스를 작성했습니다. 'location'응답 헤더를 반환하여 단축 URL의 실제 URL을 반환해야합니다. 나는 그것을 테스트하고 그것이 내가 일부에서 분석하는 네드이 짧은 URL이 포함 피드 항목을 얻을 수 FeedParser를 사용하는 다른 파일에이 방법을 사용하려고 할 때 문제가 시작하는 코드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();
}
}
여기 OK 를 작동합니다 이유 나는 결과로 대신 여기에 긴 하나의 짧은 URL을 얻을 코드입니다 : 내가의 getURL()와 shortTolong (에 대해 동일한 결과를 얻을 어떤 이유에서
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>';
}
)이이 인 내가 확실히 알고 오류.
왜 그런가? "프로토콜 HTTP 지원 또는 libcurl에서에서 사용할 수 없습니다" 나는 내가에서이 방법을 테스트 말했듯이 그것은으로 잘 작동 것 : 감사
편집 - 나는 내가이 오류 메시지가 curl_eror 와 방법에 오류 통지를 추가 동일한 환경 (변경 없음)에서 혼자 서서 나는 그것이 너무 곱슬 곱슬 함을 사용하여 FeedParser와 관련이 있다고 의심한다 ....
시도해보십시오. echo $ server_output = curl_exec ($ ch); ?? 출력 결과를 출력합니까? –
URL을 다듬어 도움이되는지 확인하십시오. –
sab - 응답 주셔서 감사합니다 $ server_output URL의 응답 헤더를 출력합니다 왜 trim()이 도움이 될 것이라고 생각하십니까? 내가이 메서드는 위대한 일을 때 정적 정적 객체 생성 문제를 테스트 시작할 때 피드 피어와 함께 동적으로 시작했을 때 –