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

Php 过滤除数字以外的所有内容,php,get,mysqli,preg-replace,urlvariables,Php,Get,Mysqli,Preg Replace,Urlvariables,我有一个get url输入,我需要将它传递到数据库中,但是在这样做之前,因为我知道用户id总是一个整数,所以我想过滤掉php中除了数字以外的所有内容。下面的代码就是我想到的,有人知道比这更好的方法吗?还是这条路对 $id = preg_replace('#[^0-9]#i', '', $_GET['id']); 如果您正在匹配号码,则不需要i选项。您的图案将只匹配1个数字。我建议像 #[0-9]+# 若要获取任意长度的数字,请忽略任何其他内容。如果要匹配数字,则不需要i选项。您的图案将只匹

我有一个get url输入,我需要将它传递到数据库中,但是在这样做之前,因为我知道用户id总是一个整数,所以我想过滤掉php中除了数字以外的所有内容。下面的代码就是我想到的,有人知道比这更好的方法吗?还是这条路对

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

如果您正在匹配号码,则不需要i选项。您的图案将只匹配1个数字。我建议像

#[0-9]+# 

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

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

#[0-9]+# 
要获取任意长度的数字,请忽略任何其他内容。

或:

$id = preg_replace('/\D/', '', $_GET['id']);
或者这个:

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

里面的克拉(
^
)表示
不是
。也就是说,不是介于0和9之间(含0和9)的字符。我们需要消除这一点。另外,
i
表示正则表达式不区分大小写;我们不需要担心,因为数字不像其他字符那样有大小写

我们需要选择想要保留的零件。括号用于此。第二个参数需要包含对要替换字符串的部分的引用(在存储到
$id
中之前)。整个函数调用如下所示:

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);
+
仅表示将有多个数字

然后可以使用确保函数调用的结果实际上是一个INT,因为如果函数没有找到数字,它将只返回
$\u GET['id']
的值

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);
if(is_int($id))
{
    //insert to DB
}
没有

里面的克拉(
^
)表示
不是
。也就是说,不是介于0和9之间(含0和9)的字符。我们需要消除这一点。另外,
i
表示正则表达式不区分大小写;我们不需要担心,因为数字不像其他字符那样有大小写

我们需要选择想要保留的零件。括号用于此。第二个参数需要包含对要替换字符串的部分的引用(在存储到
$id
中之前)。整个函数调用如下所示:

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);
+
仅表示将有多个数字

然后可以使用确保函数调用的结果实际上是一个INT,因为如果函数没有找到数字,它将只返回
$\u GET['id']
的值

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);
if(is_int($id))
{
    //insert to DB
}

您对此有何看法:$id=filter\u input(input\u GET,id,filter\u SANITIZE\u NUMBER\u INT);它将从
1sada+sda2fdasa2sasd34a
返回
1+234
,而我的代码只返回
34
<代码>过滤器\u清理\u数字\u INT
删除除数字和加减符号以外的所有字符,然后将它们粘在一起,而我的代码则采用一行中的第一个数字序列/数字块。有了这个功能,就更容易检查它是否失败了;如果(!$id){/*error*/}或者{/*insert to DB*/}
,则只需使用
if(!$id){/*error*/}或者{/*insert to DB*/}。不需要
is\u int()
。您对此有何看法:$id=filter\u input(input\u GET,id,filter\u SANITIZE\u NUMBER\u int);它将从
1sada+sda2fdasa2sasd34a
返回
1+234
,而我的代码只返回
34
<代码>过滤器\u清理\u数字\u INT
删除除数字和加减符号以外的所有字符,然后将它们粘在一起,而我的代码则采用一行中的第一个数字序列/数字块。有了这个功能,就更容易检查它是否失败了;如果(!$id){/*error*/}或者{/*insert to DB*/}
,则只需使用
if(!$id){/*error*/}或者{/*insert to DB*/}。不需要
is_int()