如何验证只输入数字的输入

3

我将制作一个表单,只允许输入数字。我正在尝试想出一个逻辑来限制以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;
            }
        ?>

你想要验证还是替换所有无效字符? - hellcode
不要对输入进行清理,只需检查它是否为数字 is_numeric($_POST['txtNumero']) 并在不是数字时告知用户。 - Ohgodwhy
我想验证用户是否输入了正确的数字,如果没有,则不能通过。 - Jahlil Espinoza
@Ohgodwhy 嗯,你什么意思?我希望如果用户输入以2开头的数字(例如2324-5456),直到他们输入以6、7或8开头的数字才允许他们通过。 - Jahlil Espinoza
2个回答

0
我建议使用这个正则表达式:
if(isset($_POST['value']) AND preg_match('/^[6-8]/', $_POST['value'])){
 // do whatever you want
}

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


我应该在哪里添加我的代码?我这样放,当我按发送按钮时,表单会清除输入,即使我输入以6-8开头的数字。 <?php $boton=@$_POST['btnParticipar']; if (isset($_POST['value']) AND preg_match('/^[6-8]/', $_POST['value'])){ $nombre=@$_POST['txtNumero']; $simbolos=array('<','>','@','?','php','*','[a-z,A-Z]'); foreach ($simbolos as $sim) { $nombre=str_replace($sim,' ',$nombre); } echo $nombre; } ?> - Jahlil Espinoza

0

你也可以这样做。我不知道这是否是一个好的解决方案,但它应该能够工作。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";
}

?>

非常感谢Emil!这正是我在寻找的,完美地工作了。 - Jahlil Espinoza
请给出建设性的意见,不要只是简单地点踩。我想知道如何改进这个解决方案。您更喜欢使用正则表达式的解决方案吗? - Emil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接