检查变量是否有数字php

时间:2009-05-23 15:14:52

标签: php variables numbers

我想检查一个变量中是否有一个数字,我只是想知道是否有一个我不在乎它是否还有其他东西如下:

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

如果您想知道所有数字,但是如果它只有一个,那么有很简单的方法可以做到这一点。谢谢你的帮助。

5 个答案:

答案 0 :(得分:69)

您可以使用strcspn功能:

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

strcspn返回不包含任何整数的部分的长度。我们将它与字符串长度进行比较,如果它们不同,则必须有一个整数。

无需为此调用正则表达式引擎。

答案 1 :(得分:12)

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

答案 2 :(得分:8)

坚持@Martin的精神,我找到了另一个以类似方式工作的功能。

(strpbrk($var, '0123456789')

e.g。测试用例

<?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 />';
}

?>

答案 3 :(得分:4)

这可以帮到你:

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

您可以从preg_match函数中获取更多信息,因此请查看its manual

答案 4 :(得分:-2)

您可以使用此模式使用正则表达式测试字符串:

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