如何从网址中删除特殊字符?

时间:2015-03-06 17:36:58

标签: php preg-replace special-characters

我有以下网址,其中var_a应始终为数字。另外我不知道var_a会有多少:

http://localhost/url.php?var_a[]=298&var_a[]=299

如果用户在网址中写入特殊字符,如何防止出错?

我做到了:

$data =  preg_replace('/[^0-9\']/', '',$_GET['var_a']);
$data = str_replace("'", '', $data);

print_r ($data);// Array ( [0] => 298 [1] => 299 )
//This is ok, all number were printed

但我仍然会收到#%&

等特殊字符的错误

e.g。

http://localhost/url.php?var_a[]=298&var_a[]=#299

print_r ($data);// Array ( [0] => 298 [1] => )
//299 was not printed!

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

据我所知,如果用户直接在URL中输入值,则无法解决问题。原因是这些字符在URLS中具有特殊含义:#表示数据片段,%表示unicode值,&代表一个新变量。您可以使用的两个选项是,如果它来自表单是使用$ _POST值,或在提交值之前使用urlencode。 Pound sign (#) not working in PHP有关于使用urlencode的更多信息。