2012-08-30 69 views
0

所以在PHP中,我試圖打開一個URL使用;PHP編碼程序與TM

$raw = file_get_contents($inlink); 

然後我正在處理結果。 $ inlin來自$ _GET變量。這適用於大多數URL,但當URL包含TM(TM)符號時,我遇到問題,因爲我收到了404錯誤。

相關網址是http://www.boots.com/en/Soap-Glory-Flake-Away-™ - 身體擦洗-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 

提交,這兩者都不工作。

奇怪的是,如果我在程序中硬編碼鏈接,那麼它的工作原理!

任何想法?

+0

不完全屬於你的問題,而是一個簡短的單挑:確保唯一已授權的用戶可以使用此功能。如果您允許客人這樣做,他們可能會使用您的服務器請求任何網址。因此,您將負責在第一行中使用此服務進行的任何濫用行爲。此外,他們可能會導致你噸流量。你真的不想要這個。 –

+0

該系統僅適用於註冊用戶,並且只允許以這種方式打開很少的URL。但感謝指針。 –

回答

1

您需要utf8_encode的URL(我假設它在ISO 8859自帶的(5)/ Latin1的)

另外,我認爲你是utf8_decoding和驗證URL運行file_get_contents()之前 - 你不希望用戶在您的系統上請求從互聯網上的任何位置請求任意URL。

+0

是的,這是它的感謝! –