Как избежать сбоев URL с помощью PHP cURL? - PullRequest
3 голосов
/ 28 февраля 2011

У меня есть URL-адрес (слегка измененный), например:

https://ssl.site.com/certificate/123/moo.shoo?type=456&domain=$GH$%2fdodo%20[10%3a47%3a11%3a3316]

Это не работает так, как я намереваюсь, когда передается напрямую в PHP cURL из-за скобок.

Мне удалось успешно запустить тот же URL-адрес в командной строке следующим образом:

curl -g "https://ssl.site.com/certificate/123/moo.shoo?type=456&domain=$GH$%2fdodo%20[10%3a47%3a11%3a3316]"

Есть ли опция (похожая на -g для отключения подстановки), которую я могу использовать в PHP cURL? Если нет, то как мне кодировать или форматировать мой URL перед передачей его в PHP cURL?

Ответы [ 2 ]

1 голос
/ 02 марта 2011

В настоящее время я использую это, и, кажется, работает

$urlReconstructed = str_replace(']', '%5D', str_replace('[', '%5B', $url));
0 голосов
/ 28 февраля 2011

Мне кажется, это работает:

$urlParts = parse_url($url);    
parse_str($urlParts['query'], $queryParts);
$urlReconstructed = sprintf('%s://%s%s?', $urlParts['scheme'], $urlParts['host'], $urlParts['path']);

foreach ($queryParts as $key => $value)
{
  $urlReconstructed .= $key . "=" . urlencode($value);
}

echo $urlReconstructed;

Спасибо, Пекка, конвертируй свой комментарий в ответ.Если не найдется лучшего ответа, я накажу правильный ответ.

...