2016-06-27 70 views
0

如何刪除在變量中轉換的編碼符號。我知道我可以用javascript和一些瀏覽器端驗證來做到這一點,但我也想確保在服務器端刪除這些以防萬一。如何從GET變量中刪除編碼符號PHP

例如在搜索框中,有人可能會輸入「你多大了?」 Get變量將問號轉換爲%25253F。如何從變量中的get查詢中刪除這部分?我想在過濾之後再次使用此獲取字符串。當前代碼:

$searchquery = str_replace(' ', '-',$_GET['search']); 
$uri = preg_replace('/[^-a-zA-Z0-9]/', '', $searchquery); 
$checkquery = $uri; 
$queryplain = str_replace('-', ' ',$uri); 
+0

當'$ _GET'被填充時,它會解碼回'?'。 – AbraCadaver

+0

沒有,因爲我刪除在$ URI變量的所有特殊字符,$ queryplain會顯示:你幾歲25253F – DEVPROCB

+0

你爲什麼不使用PHP函數[htmlspecialchars_decode](http://php.net/manual/en /function.htmlspecialchars-decode.php)再次解碼你的字符串? – Mathlight

回答

0

我想通了。這是由於帖子表單被重寫,然後被.htaccess文件重新定向。將表單從search.php更改爲/ search/working以解決get變量的問題,這又使我可以使用上面提供的代碼刪除特殊字符。