Проверьте, вводит ли пользователь ТОЛЬКО числа, PHP

1

У меня есть это inupt поле

 <p style="font-size: 18px;">Total Bids: <input type="text" class="total_bids" name="total_bids" placeholder="No. of Bids"></p>

получить его значение через:

var totalbids = document.getElementsByName('total_bids')[0].value;

и получить значение в PHP через

$total_bids = PSF::requestGetPOST('totalbids');

Все работает нормально, но предполагается, что оно принимает значение только для числа, поэтому я пытаюсь проверить, вводит ли пользователь только число, как я могу определить диапазон алфавита, чтобы я мог установить чек, например

if( $total_bids== 'alphabet range')
        {
           return json_encode(array('error' => 'Please enter a valid Number.'));
        }
Теги:
validation

5 ответов

1
Лучший ответ

Прежде всего, вы можете запретить человеку вводить что-либо, кроме чисел, в <input../>, определяя его как type="number".

Очевидно, что люди могут обойти его, поэтому вам все равно нужно проверить его на бэкэнд для этого, вам нужно будет использовать функцию is_numeric().

2

Вы можете использовать RegEx и выражение \d. \d соответствует только номерам.

1
if(preg_match ("/[^0-9]/", $total_bids)){ 
    return json_encode(array('error' => 'Please enter a valid Number.'));
}
1

Вы можете проверить is_numeric

if(!is_numeric($total_bids))
{
    return json_encode(array('error' => 'Please enter a valid Number.'));
}

Также, если вы хотите выполнить какие-либо специальные проверки, вы можете использовать regexp by preg_match, например:

if(!preg_match('~^[\d\.]$~', $total_bids))
{
    return json_encode(array('error' => 'Please enter a valid Number.'));
}

Regexp более гибкий, вы можете добавить свои собственные правила для проверки по регулярному выражению, но is_numeric быстрее проверять, а затем проверять регулярное выражение

1

как ваш вход, если вам нужны только номера, попробуйте ctype_digit:

$strings = array('1820.20', '10002', 'wsl!12');//input with quotes is preferable.
foreach ($strings as $testcase) {
    if (ctype_digit($testcase)) {
        echo "The string $testcase consists of all digits.\n";
    } else {
        echo "The string $testcase does not consist of all digits.\n";
    }
}

см. здесь: http://php.net/ctype_digit

  • 0
    Это плохой пример, потому что ctype_digit (43) вернет false, это будет работать также только для строк
  • 0
    @AntonOhorodnyk это должна быть строка в кавычках. См. Пример, и лучше всего проверять числа. И для вашей информации ввод операции имеет тип text.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню