Подтвердить что ты не робот

Проверьте, имеет ли переменная число php

Я хочу проверить, имеет ли переменная число в нем, я просто хочу посмотреть, есть ли он, мне все равно, есть ли в нем что-то еще:

"abc" - false
"!./#()" - false
"!./#()abc" - false
"123" - true
"abc123" - true
"!./#()123" - true
"abc !./#() 123" -true

Есть простые способы сделать это, если вы хотите знать, что это все числа, но нет, если у него есть только один. Благодарим за помощь.

4b9b3361

Ответ 1

Вы можете использовать функцию strcspn:

if (strcspn($_REQUEST['q'], '0123456789') != strlen($_REQUEST['q']))
  echo "true";
else
  echo "false";

strcspn возвращает длину части, которая не содержит целых чисел. Мы сравниваем это с длиной строки, и если они отличаются, то должно быть целое число.

Нет необходимости вызывать механизм регулярных выражений для этого.

Ответ 2

$result = preg_match("/\\d/", $yourString) > 0;

Ответ 3

Удерживаясь духом @Мартина, я нашел еще одну функцию, которая работает аналогичным образом.

(strpbrk($var, '0123456789')

например. тестовый пример

<?php

function a($var) {
    return (strcspn($var, '0123456789') != strlen($var));
}

function b($var) {
    return (strpbrk($var, '0123456789'));
}

$var = array("abc", "!./#()", "!./#()abc", "123", "abc123", "!./#()123", "abc !./#() 123");

foreach ($var as $v) {
    echo $v . ' = ' . b($v) .'<hr />';
}

?>

Ответ 4

Это должно помочь вам:

$numberOfNumbersFound = preg_match("/[0-9]+/", $yourString);

Вы можете получить больше от функции preg_match, так что посмотрите его руководство

Ответ 5

вы можете использовать этот шаблон для проверки своей строки с помощью регулярных выражений:

$isNumeric = preg_match("/\S*\d+\S*/", $string) ? true : false;