我想检查一个变量中是否有一个数字,我只是想知道是否有一个我不在乎它是否还有其他东西如下:
"abc" - false
"!./#()" - false
"!./#()abc" - false
"123" - true
"abc123" - true
"!./#()123" - true
"abc !./#() 123" -true
如果您想知道所有数字,但是如果它只有一个,那么有很简单的方法可以做到这一点。谢谢你的帮助。
答案 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;