Я хочу проверить, имеет ли переменная число в нем, я просто хочу посмотреть, есть ли он, мне все равно, есть ли в нем что-то еще:
"abc" - false "!./#()" - false "!./#()abc" - false "123" - true "abc123" - true "!./#()123" - true "abc !./#() 123" -true
Есть простые способы сделать это, если вы хотите знать, что это все числа, но нет, если у него есть только один. Спасибо за вашу помощь.
Вы можете использовать функцию strcspn
:
if (strcspn($_REQUEST['q'], '0123456789') != strlen($_REQUEST['q'])) echo "true"; else echo "false";
strcspn
возвращает длину части, которая не содержит целых чисел. Мы сравниваем это с длиной строки, и если они отличаются, то должно быть целое число.
Для этого нет необходимости ссылаться на механизм регулярных выражений.
$result = preg_match("/\\d/", $yourString) > 0;
Держась за дух @ Мартина, я нашел еще одну функцию, которая работает аналогичным образом.
(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 />'; } ?>
Это должно помочь вам:
$numberOfNumbersFound = preg_match("/[0-9]+/", $yourString);
Вы можете получить больше от функции preg_match, так что посмотрите на его руководство
вы можете использовать этот шаблон для проверки своей строки с помощью регулярных выражений:
$isNumeric = preg_match("/\S*\d+\S*/", $string) ? true : false;