代码之家  ›  专栏  ›  技术社区  ›  Scott

检查变量是否有数字php

  •  19
  • Scott  · 技术社区  · 15 年前

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

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

    如果你想知道这都是数字,有很多简单的方法可以做到,但如果只有一个数字就不行了。谢谢你的帮助。

    5 回复  |  直到 9 年前
        1
  •  69
  •   Martin Geisler    15 年前

    你可以使用 strcspn 功能:

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

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

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

        2
  •  12
  •   Tomalak    15 年前
    $result = preg_match("/\\d/", $yourString) > 0;
    
        3
  •  8
  •   symfonian Abhishek Madhani    9 年前

    坚持@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 />';
    }
    
    ?>
    
        4
  •  4
  •   Peter Perháč    15 年前

    这将有助于您:

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

    你可以从preg ou匹配函数中得到更多,所以看看 its manual

        5
  •  -2
  •   farzad    15 年前

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

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