Проверка числа в текстовом поле в PHP

Мне нужно проверить значение текстового поля. Текстовое поле предназначено для номера телефона клиента в формате 0123456789 (т.е. только 10 номеров, и это слишком активно, что означает, что при вводе номера пользователь не сможет добавлять какие-либо буквы или специальные символы)

Данные отправляются на страницу (validate.php) с помощью метода POST форм.

Мне нужна функция, которая будет принимать только 10 цифр подряд, без букв или символов.


person viru_d_great    schedule 06.06.2012    source источник
comment
Используйте регулярное выражение, например \d{10}   -  person kv-prajapati    schedule 06.06.2012
comment
спасибо, бро... и я уже сделал это, но это не позволит мне жить (во время входа)   -  person viru_d_great    schedule 06.06.2012
comment
Жить? Я думаю, что вы должны использовать проверку на стороне клиента для «живого» (и на стороне клиента я имею в виду JavaScript).   -  person ogur    schedule 06.06.2012
comment
@viru_d_great - Взгляните на поток SO - stackoverflow.com/questions/995183/   -  person kv-prajapati    schedule 06.06.2012


Ответы (4)


Я думаю, что это сработает для вас:

<html>
<head>
<script type="application/javascript">

  function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

         return true;
      }

</script>
</head>

<body>
    <input type="text" name="tel_num" value="" onkeypress="return isNumberKey(event)" maxlength="10"/>
</body>
</html>
person sephoy08    schedule 06.06.2012

вы можете использовать preg_match, например

preg_match('/^[0-9]{10}$/', $_POST['your-value']);
person Tomas Jancik    schedule 06.06.2012

Вы можете либо использовать регулярное выражение в своем PHP-скрипте, как указано AVD, либо запретить пользователю отправлять форму, используя плагин проверки jQuery.

HTML

<form name="contact" id="contact">
    <input name="number" id="number" />
</form>

jquery

$("#contact").validate({
    rules: {
        number: {
            required: true,
            minlength: 10,
            numeric: true
                }
    },
        messages: {
            number: {
                required: "Enter a phone number",
                minlength: "The phone number is too short",
                numeric: "Please enter numeric values only"
            }
        }
})

Дополнительные сведения см. на странице jQuery/Validation.

person Ahatius    schedule 06.06.2012

Попробуй это. Он проверяет ввод при каждом вводе ключа

HTML:

<input size="10" maxlength="10" type="text" name="p_len" id="p_len" value="" onkeyup="check(this)" />

Javascript:

function check(o) {
    v=o.value.replace(/^\s+|\s+$/,''); // remove any whitespace
    if(o=='') {
        return;
    }
    v=v.substr(v.length-1);
    if(v.match(/\d/g)==null) {
        o.value=o.value.substr(0,o.value.length-1).replace(/^\s+|\s+$/,'');
    }
}

Он удалит нецифровой ввод, как только он будет введен, а длина ограничена 10.

Надеюсь это поможет.

person web-nomad    schedule 06.06.2012