过滤除数字以外的所有内容



我有一个get-url输入,我需要将其传递到数据库中,但在此之前,由于我知道用户id总是一个整数,所以我想在php中过滤掉除数字之外的所有内容。下面的代码就是我想出的,有人知道比这更好的方法吗?还是这是正确的方式?

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

否。

里面的克拉(^)表示NOT。I.E.不是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
}

如果要匹配数字,则不需要i选项。您的模式将只匹配1个数字。我建议像

#[0-9]+# 

以获取任意长度的数字,忽略其他任何内容。

或者这个:

$id = preg_replace('/D/', '', $_GET['id']);

相关内容

  • 没有找到相关文章

最新更新