PHP - クラスメソッドは、foreachループ内で動作させることはできません
-
19-09-2019 - |
質問
私は、これは「場所」レスポンスヘッダを返すことによって、短縮URLのための本当のURLを返す必要があります)メソッドshortTolongを(持っているクラスのリンクを書きました。私はそれをテストし、それがOK作品 ここにコードがある
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();
}
}
私は私が取得するいくつかの理由から分析するために定義さこの短いURLを含むフィードエントリを取得するにはFeedParserを使って他のファイルに対して、このメソッドを使用しようとすると問題が結果としてショート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と方法にエラー通知を追加しました 私は、このエラーメッセージが表示されます:「プロトコルのHTTPをサポートしたりlibcurlのでは無効になっていません」 私が言ったように私はからこのメソッドをテストし、私は疑う同じ環境でのみ(変更)を立たないとして、それは使用してFeedParserとは何かを持っているとして、それが正常に働いているカールあまりに....
解決
私はあなたが)(URLをトリミングする必要があり、それが問題を解決するべきだと思います。
所属していません StackOverflow