gpt4 book ai didi

php - file_get_contents - URL 中的特殊字符 - 特例

转载 作者:行者123 更新时间:2023-12-03 14:08:29 32 4
gpt4 key购买 nike

在这种特殊情况下,我不会让 file_get_contents() 返回页面,其中 url 包含一个“Ö”字符。

$url = "https://se.timeedit.net/web/liu/db1/schema/s/s.html?tab=3&object=CM_949A11_1534_1603_DAG_DST_50_ÖVRIGT_1_1&type=subgroup&startdate=20150101&enddate=20300501"
print file_get_contents($url);

如何使 file_get_contents() 在此 url 上按预期工作?

我尝试了以下解决方案而没有工作结果:

1.
print rawurlencode(utf8_encode($url));

2.
print mb_convert_encoding($url, 'HTML-ENTITIES', "UTF-8");

3.
$url = urlencode($url);
print file_get_contents($url);

4.
$content = file_get_contents($url);
print mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));

在这些问题中找到:

file_get_contents - special characters in URL

PHP get url with special characters without urlencode:ing them!

file_get_contents() Breaks Up UTF-8 Characters

更新:
正如您所看到的,在我的示例中实际上返回了一个页面,但它不是您在浏览器中键入 url 时获得的预期页面。

最佳答案

URL 不能包含“Ö”! 从这个基本前提开始。任何不在严格定义的 ASCII 子集中的字符都必须进行 URL 编码才能在 URL 中表示。正确的做法是到 urlencoderawurlencode (取决于服务器期望的格式)URL 的单个部分,不是整个 URL .

例如。:

$url = sprintf('https://se.timeedit.net/web/liu/db1/schema/s/s.html?tab=3&object=%s&type=subgroup&startdate=20150101&enddate=20300501',
rawurlencode('CM_949A11_1534_1603_DAG_DST_50_ÖVRIGT_1_1'));

您仍然需要为字符串使用正确的编码! Ö在 ISO-8859-1 中将 URL 编码为 %D6 , 而在 UTF-8 中,它将被编码为 %C3%96 .哪一个是正确的取决于服务器的期望。

关于php - file_get_contents - URL 中的特殊字符 - 特例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31720418/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com