0

ソース名にコロンが含まれる URL のコンテンツを取得する cURL を使用して、php スクリプトを取得しました。

$url = 'http://www.awebsite.com/anxml:file:thatoddly:hascolons:allovertheplace:';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($ch);

if(curl_errno($ch)) {
   echo 'Curl error: ' . curl_error($ch);
}

curl_close($ch);

エラーが発生しています。

Could not resolve host: http; nodename nor servname provided, or not known <url here>

それ以外の場合はURLが正常に機能していることを再確認しましたが、cURLがファイル名のコロンで窒息していると思われます。ソースは私のものではないため、コロンを削除できません。

これを回避する別の方法はありますか?

4

2 に答える 2

2

プロバイダーがファイルを修正したので、コロンを扱う必要はもうありません。結局、私は cURL を不適切に使用していたことが判明し、おそらく以下のコードで urlencode() が機能したはずです。

これはうまくいきませんでした:

    $url = urlencode($url);
    $url = str_replace("http%3A","http:",$url);

    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);

これはうまくいきました:

    $url = urlencode($url);
    $url = str_replace("http%3A","http:",$url);

    $c = curl_init($url);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    $data = iconv("UTF-8","ISO-8859-1",curl_exec($c));

それが誰かを助けることを願っています。

于 2012-09-06T04:59:58.777 に答える
0

man ページを見ると、cURLには--data-urlencodeフラグがあります。

CLI ではなく PHP を介して実行されている URL が 1 つだけの場合は、PHP のurlencode()を使用できます。

于 2012-09-01T21:30:12.093 に答える