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