2016-06-27 40 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变量的问题,这又使我可以使用上面提供的代码删除特殊字符。