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