分享
三行代码  ›  专栏  ›  技术社区  ›  Super Man

PHP字符串拆分规则

  •  1
  • Super Man  · 技术社区  · 5 天前

    正则exp=(数字)*(A | B | DF | XY)+(数字)+

    我想用PHP把这个字符串分开,有人可以帮我

    1. A1234号
    2. 1A123型
    3. 12A123号
    4. 12甲123
    5. 12号XY 1234567890

    转换成这个

    Array
    (
        [0] => 12
        [1] => XY
        [2] => 1234567890
    )
    
    <?php
    $input = "12    XY      123456789";
    print_r(preg_split('/\d*[(A|B|DF|XY)+\d+]+/', $input, 3));
    //print_r(preg_split('/[\s,]+/', $input, 3));
    //print_r(preg_split('/\d*[\s,](A|B)+[\s,]\d+/', $input, 3));
    
    1 回复  |  直到 5 天前
        1
  •  1
  •   Wiktor Stribiżew    5 天前

    您可以匹配并捕获数字、字母和数字:

    $input = "12    XY      123456789";
    if (preg_match('/^(?:(\d+)\s*)?(A|B|DF|XY)(?:\s*(\d+))?$/', $input, $matches)){
        array_shift($matches);
        print_r($matches);
    }
    

    PHP demo 以及 regex demo .

    • ^
    • (?:(\d+)\s*)?
      • (\d+) -组1:任意或多个数字
      • \s*
    • (A|B|DF|XY) -第2组: A , B , DF XY
    • (?:\s*(\d+))? -可选顺序:
      • \s公司*
    • $