PHP:file_get_contents URL 上的错误请求
PHP: bad request on file_get_contents URL
这是我的代码:
$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(我可以从浏览器 copy/paste)
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 上的特殊字符进行编码?
您只能对 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)));
这是我的代码:
$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(我可以从浏览器 copy/paste)
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 上的特殊字符进行编码?
您只能对 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)));