Фильтровать все, кроме числа - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть ввод get url, который мне нужно передать в базу данных, но перед этим, поскольку я знаю, что идентификатор пользователя всегда будет целым числом, я хотел отфильтровать все, кроме числа в php.Следующий код - это то, что я придумал, кто-нибудь знает лучший способ, чем этот?или это правильный путь?

$id = preg_replace('#[^0-9]#i', '', $_GET['id']);

Ответы [ 3 ]

5 голосов
/ 26 февраля 2012

Нет.

Карат (^) внутри означает NOT.IE не символ от 0 до 9 включительно.Мы должны удалить это.Кроме того, i означает, что регулярное выражение не чувствительно к регистру ;нам не нужно беспокоиться об этом, потому что у чисел нет регистра, как у других символов.

Нам нужно выбрать, какую часть мы хотим оставить.Для этого используются скобки.Второй параметр должен содержать ссылку на часть, на которую мы хотели бы заменить строку (перед сохранением в $id).Таким образом, весь вызов функции будет выглядеть следующим образом:

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);

+ просто означает, что будет несколько цифр.

Затем вы можете использовать is_int()чтобы убедиться, что результат вызова функции фактически является INT, потому что если функция не нашла цифру, она просто вернет значение $_GET['id'].

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);
if(is_int($id))
{
    //insert to DB
}
0 голосов
/ 26 февраля 2012

Или это:

$id = preg_replace('/\D/', '', $_GET['id']);
0 голосов
/ 26 февраля 2012

Вам не понадобится опция i, если вы соответствуете номерам. Ваш шаблон будет соответствовать только 1 цифре. Я предлагаю что-то вроде

#[0-9]+# 

для получения любой длины числовых цифр, игнорируя все остальное.

...