过滤除数字之外的一切

Sok*_*kar 0 php mysqli get preg-replace urlvariables

我有一个获取url输入,我需要将其传递给数据库,但在此之前,因为我知道用户ID将始终是一个整数,我想过滤除了PHP中的所有数字.接下来的代码是我提出的,有没有人知道比这更好的方法?或者这是正确的方法吗?

$id = preg_replace('#[^0-9]#i', '', $_GET['id']);
Run Code Online (Sandbox Code Playgroud)

Ada*_*nch 5

没有.

克拉(^)内部意味着NOT.IE不是0到9之间的字符.我们需要删除它.此外,i表示正则表达式不区分大小写 ; 我们不需要担心,因为数字没有其他字符的情况.

我们需要选择我们想要保留的部分.支架用于此.第二个参数需要包含对我们要替换字符串的部分的引用(在存储之前$id).所以整个函数调用看起来像这样:

$id = preg_replace('#([0-9]+)#', '\1', $_GET['id']);
Run Code Online (Sandbox Code Playgroud)

+ 只是暗示会有多个数字.

然后,您可以使用is_int()以确保函数调用的结果实际上是INT,因为如果函数找不到数字,它将只返回值$_GET['id'].

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