Php “如何更改此正则表达式”/^[0-9]+$/m";?

Php “如何更改此正则表达式”/^[0-9]+$/m";?,php,Php,在这段代码中,当我输入第一个数字,然后输入任何字符,比如9a 该语句(if)为false,未打印“仅允许数字”而继续 但在这份声明中 if (!preg_match("/^[0-9]+/", $_POST["userid"])){ die("ONLY numbers allowed"); } 当我输入9a或任何第一个带有类似9a字符的数字时,该语句为true并打印“仅允许数字” 我应该输入什么样的输入值来生成语句(false),而不是进入正在打印允许的数字的if语句?完全不要使用Reg

在这段代码中,当我输入第一个数字,然后输入任何字符,比如9a 该语句(if)为false,未打印“仅允许数字”而继续

但在这份声明中

if (!preg_match("/^[0-9]+/", $_POST["userid"])){
    die("ONLY numbers allowed");
}
当我输入9a或任何第一个带有类似9a字符的数字时,该语句为true并打印“仅允许数字”


我应该输入什么样的输入值来生成语句(false),而不是进入正在打印允许的数字的if语句?

完全不要使用Regex

if (!preg_match("/^[0-9]+$/m", $_POST["userid"])){
    die("ONLY numbers allowed");
}
输入,例如:

if(!filter_input(INPUT_POST, "userid", FILTER_SANITIZE_NUMBER_INT))
    die ("ONLY numbers allowed");
将通过您的正则表达式,因为第一行只有数字。
m
逐行检查。但是,您希望整个字符串都是数字

只需在字符串中的任意位置检查非数字值就会更容易:

$_POST["userid"] = '1234
--\'';
但是对于SQL部分,最好使用参数化查询。您也不应该存储纯文本密码

见:


  • ^[0-9]+$
    ^
    表示行首,
    $
    表示行尾。它现在做什么?您希望它做什么?好的,我应该输入什么值来生成语句(false),而不是进入正在打印允许数字的if语句内部?if(!preg_match(“/^[0-9]+$/m”,$\u POST[“userid”]){die(“只允许数字”);}好的,我的肉汤如何破解这个if(!preg_match(/^[0-9]+$/m,$\u POST[“userid”]){die(“只允许数字”);}删除结尾的多行限定符(m)
    “/^[0-9]+$/”
    好的,我应该输入什么值来进行声明(false)而不是进入正在打印允许的数字的if语句内部?如果(!preg_match(“/^[0-9]+$/m”,$_POST[“userid”]){die(“仅允许数字”);}……或者在重新读取此文件时,您正在查找传递给它以绕过该测试的值。请参阅更新的答案。
    if(!filter_input(INPUT_POST, "userid", FILTER_SANITIZE_NUMBER_INT))
        die ("ONLY numbers allowed");
    
    $_POST["userid"] = '1234
    --\'';
    
    if (empty($_POST["userid"]) || preg_match("/\D/", $_POST["userid"])){
         die('You entered an unacceptable string');