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

URLが必要ですutf8_encode(ISO-8859-1(5)/Latin1 で提供されていると思います)。

また、実行する前に utf8_decoding と URL の検証を行っていると仮定します。file_get_contents()ユーザーがインターネット上のどこからでも任意の URL をシステムに要求することは望ましくありません。

于 2012-08-30T11:53:58.683 に答える