Проверьте, имеет ли переменная число php - PullRequest
19 голосов
/ 23 мая 2009

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

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

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

Ответы [ 5 ]

69 голосов
/ 23 мая 2009

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

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

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

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

12 голосов
/ 23 мая 2009
$result = preg_match("/\\d/", $yourString) > 0;
8 голосов
/ 02 июля 2013

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

(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 голосов
/ 23 мая 2009

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

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

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

0 голосов
/ 23 мая 2009

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

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