Php 过滤除数字以外的所有内容
我有一个get url输入,我需要将它传递到数据库中,但是在这样做之前,因为我知道用户id总是一个整数,所以我想过滤掉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选项。您的图案将只匹
$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()
。