2010-07-10 2 views
0

BC1024, AB124, CBC2548,pregmatch отдельный номер и характер

используя PREG матч, чтобы отделить число и характер,

Для этого я попытался это выражение матч PREG, но его не очень работает,

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

я хочу выход как

 
Array 
(
    [0] => BC1024: 2008 
    [name] => BC 
    [1] => BC 
    [digit] => 1024 
    [2] => 1024 
) 

Но мой матч PREG не работает ... .

просто shoing пустой массив,

ответ

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

Это дает

 
Array 
(
    [0] => BC1024 
    [name] => BC 
    [1] => BC 
    [digit] => 1024 
    [2] => 1024 
) 
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" } 
} 
2

Просто чтобы показать, что вам не нужно preg_match, чтобы разбить простую строку:

list($name,$digit) = sscanf($flight_code_no,'%[A-Z]%d'); 
Смежные вопросы