2014-01-30 112 views
0

我想顯示$ _GET變量是顏色的URL,並有一個數字符號(散列)在他們(又名,說「#ff0000」紅色),但我不能似乎得到它的工作。 我無法將顏色輸出更改爲除十六進制顏色代碼之外的任何內容(不受我的控制),所以這不是一個解決方案。

這是目前問題:

// URL: http://__________.com/styles.php?color=#f6f6f6&color2=#fff 
var_dump($_GET['color']); 
// Returns string(0) "" 

在頁面上使用引用是:

<link href='//__________.com/styles.php?color={color}&color2={color2}' rel='stylesheet' type='text/css'>

所以當頁面加載它從第一代碼片段輸出網址(http://__________.com/styles.php?color=#f6f6f6&color2=#fff)。

此外,如果變量存在或不存在,filter_input的最佳方式是什麼?例如,我用這個,但我不認爲這是正確的:

$color = ($_GET['color'] != '' ? filter_input(INPUT_GET, 'color', FILTER_SANITIZE_ENCODED) : 'green');

謝謝!

回答

2

在地址欄中,符號#具有不同的含義。

您應該使用urlencode()來

urlencode("http://__________.com/styles.php?color=#f6f6f6&color2=#fff") 

,並從另一個側面urldecode

隨着中說,這裏有一個例子: 如果我想通過哈希標籤#我需要將其替換爲另一個匹配字符串,即:%23,它是散列標籤的匹配字符串。

所以我的字符串將是這樣的:

http://__________.com/styles.php?color=%23f6f6f6&color2=%23fff 

在PHP端我將解碼的給定值。

$myColor = urldecode($_GET['color]); 

而且它現在將保存顏色我打算#f6f6f6

+0

難道是一個問題,但如果邊引用'HTTP://______.com/styles.php顏色=#f6f6f6&COLOR2 =#fff'沒有PHP或類似的東西?我不認爲我可以使用'urlencode'呢? –

+0

如果您看到我的附加內容,但它已被用於樣式表引用中,那麼如何更改您的答案? –

+0

我真的結束了這個工作!謝謝! –

0

這是因爲#是預留的網址字符。請參閱RFC 3986 生成URL時,請對其進行編碼,使#符合URL的安全性。

爲了編碼,只需更換的#所有ocurrences與%23