我想检查一个变量中是否有一个数字,我只想看看是否有一个我不在乎它是否还有其他东西,如下所示:
"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;
秉承@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;