【问题标题】:How to validate a input to numbers only如何仅验证数字的输入
【发布时间】:2015-08-26 18:32:45
【问题描述】:

我正在制作一个只允许数字的表格。我正在尝试找出限制以 1、2、3、4、5 开头的数字的输入逻辑。

这是我的php代码

<?php
            $boton=@$_POST['btnParticipar'];
            if (isset($boton)) {
                $nombre=@$_POST['txtNumero'];
                $simbolos=array('<','>','@','?','php','*','[a-zA-Z]');
                foreach ($simbolos as $sim) {
                    $nombre=str_replace($sim,' ',$nombre);
                }
                echo $nombre;
            }
        ?>

【问题讨论】:

  • 您要验证还是替换所有无效字符?
  • 不要清理输入,只需检查它是否is_numeric($_POST['txtNumero']) 并告诉用户什么时候不是。
  • 我想验证,如果用户输入的数字不正确,则无法通过。
  • @Ohgodwhy 嗯,你的意思是什么?我希望如果用户输入一个以 2 开头的数字,例如 2324-5456,不要让他们通过,直到他们输入一个以 6,7 或 8 开头的数字

标签: php forms validation


【解决方案1】:

你也可以这样做。我不知道这是否是一个好的解决方案,但它应该可以工作。 if 语句的第一部分检查输入是否为整数,第二部分检查第一个数字是 6、7 还是 8。

<?php

if(filter_var($_POST['txtNumero'], FILTER_VALIDATE_INT) AND in_array(substr($_POST['txtNumero'], 0, 1), array(6, 7, 8))) {
    echo "Correct";
} else {
    echo "Incorrect";
}

?>

【讨论】:

  • 非常感谢埃米尔!这就是我一直在寻找的,完美的工作。
  • 投反对票的人 - 请保持建设性。我想知道如何改进解决方案。你喜欢正则表达式的解决方案吗?
【解决方案2】:

我会建议这个正则表达式:

if(isset($_POST['value']) AND preg_match('/^[6-8]/', $_POST['value'])){
 // do whatever you want
}

我只从你那里知道输入需要以 6,7,8 开头,这可能是最好的解决方案。

【讨论】:

  • 我在哪里添加我的代码?我这样说,当我按下发送表格时,我输入了干净的输入,甚至我输入了以 6-8 开头的数字。 ','@','?','php','*','[a-z,A-Z]'); foreach ($simbolos as $sim) { $nombre=str_replace($sim,' ',$nombre); } 回声 $nombre; } ?>
猜你喜欢
  • 1970-01-01
  • 2014-04-02
  • 2021-12-24
  • 1970-01-01
  • 2021-01-23
  • 2015-07-29
  • 1970-01-01
  • 2023-03-30
  • 2022-09-28
相关资源
最近更新 更多