19

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

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

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

4

5 回答 5

69

您可以使用以下strcspn功能:

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

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

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

于 2009-05-23T15:24:15.130 回答
12
$result = preg_match("/\\d/", $yourString) > 0;
于 2009-05-23T15:19:52.017 回答
8

秉承@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 />';
}

?>
于 2013-07-02T07:57:05.770 回答
4

这应该可以帮助您:

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

您可以从 preg_match 函数中获得更多信息,因此请查看其手册

于 2009-05-23T15:25:06.593 回答
-2

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

$isNumeric = preg_match("/\S*\d+\S*/", $string) ? true : false;
于 2009-05-23T15:24:32.837 回答