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

获取PHP字符串中第一个字母之前的所有数字

  •  0
  • Blackjack  · 技术社区  · 7 年前

    我在试着得到所有的数字 空间/alpha

    实例

    <?php
    //string
    $firstStr = '12 Car';
    $secondStr = '412 8all';
    $thirdStr = '100Pen';
    
    //result I need
    firstStr = 12
    SecondStr = 412 
    thirdStr = 100
    

    阿尔法 ,然后获取该位置之前的所有数字。 我已经成功地使用

    preg_match('~[a-z]~i', $value, $match, PREG_OFFSET_CAPTURE);
    

    我该怎么做,或者谁知道如何修正我的想法?

    4 回复  |  直到 4 年前
        1
  •  3
  •   Don't Panic    7 年前

    你不需要像你所展示的例子那样,对字符串使用正则表达式,也不需要任何函数。你可以直接将它们转换为int。

    $number = (int) $firstStr;  // etc.
    

    The PHP rules for string conversion to number 我会帮你处理的。

    '-12 Car' '412e2 8all' .


    如果确实使用正则表达式,请确保使用 ^

    preg_match('/^\d+/', $string, $match);
    $number = $match[0] ?? '';
    
        2
  •  1
  •   Kevin_Kinsey    7 年前

    以下是一种在大多数情况下都适用的极端黑客方法:

    $s = "1001BigHairyCamels";
    $n = intval($s);
    $my_number = str_replace($n, '', $s);
    
        3
  •  1
  •   Jirka Hrazdil    7 年前
    $input = '100Pen';
    if (preg_match('~(\d+)[ a-zA-Z]~', $input, $m)) {
      echo $m[1];
    }
    
        4
  •  1
  •   N3R4ZZuRR0 user12232205    7 年前

    <?php
    function getInt($str){
        preg_match_all('!\d+!', $str, $matches);
        return $matches[0][0];
    }
    $firstStr = '12 Car';
    $secondStr = '412 8all';
    $thirdStr = '100Pen';
    echo 'firstStr = '.getInt($firstStr).'<br>';
    echo 'secondStr = '.getInt($secondStr).'<br>';
    echo 'thirdStr = '.getInt($thirdStr);
    ?>