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

0

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

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 ?
Теги:
special-characters
preg-replace

1 ответ

0

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

  • 0
    var_a исходит из формы, но $ _POST не вариант. Можно ли использовать urlencode с формой?
  • 0
    Я не верю, что вы можете использовать PHP, но вы можете использовать Javascript аналогично тому, как вы делаете валидатор форм.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню