0

BC1024、AB124、CBC2548、

preg match を使用して数字と文字を分離し、

そのために、このプレグマッチ式を試しましたが、あまり機能しません。

preg_match_all('/(?P\w+): (?P\d+)/', $flight_code_no, $matches,PREG_PATTERN_ORDER);

次のように出力したい

配列
(
    [0] => BC1024: 2008
    [名前] => 紀元前
    [1] => 紀元前
    [数字] => 1024
    [2] => 1024
)

しかし、私のプレグマッチは機能していません....

空の配列を表示するだけで、

4

3 に答える 3

2
preg_match('/(?<name>[A-Z]+)(?<digit>\d+)/', 'BC1024', $result);

これは与える

配列
(
    [0] => BC1024
    [名前] => 紀元前
    [1] => 紀元前
    [数字] => 1024
    [2] => 1024
)
于 2010-07-10T14:21:56.047 に答える
2

そのような単純な文字列を分割するために preg_match が必要ないことを示すためだけに:

list($name,$digit) = sscanf($flight_code_no,'%[A-Z]%d');
于 2010-07-10T19:22:50.223 に答える
1

ランニング

<?php

foreach (array("BC1024", "AB124","CBC2548") as $v) {
  preg_match_all("/(?P<name>[A-Z]+)(?P<digit>\d+)/", $v, $matches); 
  var_dump($matches);
}

出力 (brewity 用に一部の改行を削除)

array(5) {
  [0]=>       array(1) {    [0]=>    string(6) "BC1024"  }
  ["name"]=>  array(1) {    [0]=>    string(2) "BC"  }
  [1]=>       array(1) {    [0]=>    string(2) "BC"  }
  ["digit"]=> array(1) {    [0]=>    string(4) "1024"  }
  [2]=>       array(1) {    [0]=>    string(4) "1024"  }
}
array(5) {
  [0]=>       array(1) {    [0]=>    string(5) "AB124"  }
  ["name"]=>  array(1) {    [0]=>    string(2) "AB"  }
  [1]=>       array(1) {    [0]=>    string(2) "AB"  }
  ["digit"]=> array(1) {    [0]=>    string(3) "124"  }
  [2]=>       array(1) {    [0]=>    string(3) "124"  }
}
array(5) {
  [0]=>       array(1) {    [0]=>    string(7) "CBC2548"  }
  ["name"]=>  array(1) {    [0]=>    string(3) "CBC"  }
  [1]=>       array(1) {    [0]=>    string(3) "CBC"  }
  ["digit"]=> array(1) {    [0]=>    string(4) "2548"  }
  [2]=>       array(1) {    [0]=>    string(4) "2548"  }
}
于 2010-07-10T14:20:46.837 に答える