Foreach Loop -PHP 내부에서 작동하는 클래스 방법을 얻을 수 없습니다.
-
19-09-2019 - |
문제
나는 '위치'응답 헤더를 반환하여 단축 된 URL에 대한 실제 URL을 반환 해야하는 메소드 ShortToLong ()이있는 클래스 링크를 작성했습니다. 나는 그것을 테스트했고 그것은 여기서 잘 작동합니다. 여기에 코드가 있습니다.
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를 사용하여 다른 파일 에서이 방법을 사용 하여이 짧은 URL을 포함하는 피드 항목을 가져 오기 위해이 방법을 사용하여 어떤 이유로 든 간단한 URL이 아닌 짧은 URL이 코드입니다.
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와 관련이 있다고 생각합니다 ....
해결책
URL ()를 트림해야한다고 생각하며 문제를 해결해야합니다.
제휴하지 않습니다 StackOverflow