0

所以在PHP中我试图打开一个URL;

$raw = file_get_contents($inlink);

然后我正在研究结果。$inlin 来自 $_GET 变量。这适用于大多数 URL,但是当 URL 包含 TM (™) 符号时我遇到一个问题,因为我收到 404 错误。

有问题的URL 是http://www.boots.com/en/Soap-Glory-Flake-Away-™-Body-Scrub-300ml_27894/

所以这似乎是一个编码问题。所以我尝试了urlencode,但这没有帮助。我也试过从firefox的地址栏复制过去,这样我就输入了

http://www.boots.com/en/Soap-Glory-Flake-Away-%E2%84%A2-Body-Scrub-300ml_27894/

相反,但这也无济于事。

通过调试和回显到屏幕,我最终得到了

http://www.boots.com/en/Soap-Glory-Flake-Away-â„¢-Body-Scrub-300ml_27894/

或者

http%3A%2F%2Fwww.boots.com%2Fen%2FSoap-Glory-Flake-Away-%E2%84%A2-Body-Scrub-300ml_27894%2F

正在提交,这两个都不起作用。

奇怪的是,如果我在程序中对链接进行硬编码,那么它就可以工作!

有任何想法吗?

4

1 回答 1

1

您需要utf8_encodeURL(我假设它来自 ISO-8859-1(5)/Latin1)

另外,我假设您在运行之前正在 utf8_decoding 和验证 URL file_get_contents()- 您不希望用户让您的系统从 Internet 上的任何地方请求任意 URL。

于 2012-08-30T11:53:58.683 回答