2015-03-06 4 views
0

У меня есть следующий url, где var_a всегда должно быть числом. Кроме того, я не знаю, сколько var_a будет:Как удалить специальные символы из URL?

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

Как предотвратить получить ошибку, если пользователь записывает специальные символы в URL?

Я сделал это:

$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 

Но я все еще получаю ошибку со специальными символами, как #% &

например

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

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

Как я могу это исправить?

+0

Использовать [urlencode] (http://php.net/manual/en/function.urlencode.php)? – SebHallin

ответ

0

Насколько я могу судить, вы не можете исправить это, если пользователи вводят значения непосредственно в URL. Причина в том, что эти символы имеют особые значения в URLS: # представляет фрагмент данных,% представляет значения unicode, а & представляет собой новую переменную. Два варианта, которые вы можете использовать, - использовать, если он поступает из формы, - использовать значения $ _POST или использовать urlencode перед отправкой значений. Pound sign (#) not working in PHP имеет дополнительную информацию об использовании urlencode.

+0

var_a исходит из формы, но $ _POST не является вариантом. Можно ли использовать urlencode с формой? – Freddie

+0

Я не верю, что вы можете использовать PHP, но вы можете использовать Javascript, похожий на то, как вы будете делать валидатор формы. – Nathan

Смежные вопросы