PHP: неверный запрос на URL file_get_contents - PullRequest
0 голосов
/ 24 марта 2020

вот мой код:

$url = "https://de.wikipedia.org/wiki/Creed_–_Rocky’s_Legacy";
$html = file_get_contents($url);

Я получаю эту ошибку:

HTTP request failed! HTTP/1.0 400 Bad Request

Проблема заключается в специальных символах в URL - это работает, если я использую закодированный URL (который я могу скопировать / вставить из браузера)

https://de.wikipedia.org/wiki/Creed_%E2%80%93_Rocky%E2%80%99s_Legacy

Я попытался использовать urlencode(), но он закодирует всю строку и не будет работать вообще:

https%3A%2F%2Fde.wikipedia.org%2Fwiki%2FCreed_%96_Rocky%92s_Legacy

Итак, как я могу кодировать специальные символы в URL-адресах, как это?

1 Ответ

1 голос
/ 24 марта 2020

Вы можете закодировать только последнюю часть URL

$url = "https://de.wikipedia.org/wiki/" . urlencode("Creed_–_Rocky’s_Legacy");
$html = file_get_contents($url);

Или, если ваша переменная $ url изменится:

$url = "https://de.wikipedia.org/wiki/Creed_–_Rocky’s_Legacy";
$html = file_get_contents(dirname($url) . "/" . urlencode(basename($url)));
...