我有一个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']);