2014-10-22 5 views
-2

정규 표현식을 사용하여 배열과 문자열을 분리하려고합니다. 문자열마다 변경 될 수 있습니다 내가 뭘해야 T와 문자열 일치하는 경우입니다 : M은 :, 그때PHP에서 정규 표현식을 사용하여 문자열을 배열로 나눕니다.

array(
[0] => 4774 4848, 
[1]=>0448 888 899 
) 
로 내 결과를 필요 문자열이 모두 T를 일치하면 내가 4774 4848 을 얻을 필요 이건 내 코드입니다

, 여기

if (preg_match("/[T:|M:|Mob:|Phone:]\W(.*)[\W:]/mi", "T: 4774 4848 M: 0448 888 899", $matches)) 
     print_r($matches); 

내 출력

Array 
(
    [0] => T: 4774 4848 M: 0448 888 
    [1] => 4774 4848 M: 0448 888 
) 

나는을 나눌 수있는 방법입니다as

[1] => 4774 4848, 
[2]=>0448 888 899 

도와주세요. 미리 감사드립니다.

+0

대괄호 '[...]의'charac 의미 ter 클래스, 대안이 아니다. 'preg_match_all','(. *)'보다 좀 더 구체적이고 덜 욕심 많은 것을 사용하고,'\ W :'를 소비하지 않기를 원할 것입니다. – mario

+0

당신은 나에게 모범을 보일 수 있니? – GGGGG

답변

1

분할 대신 일치 작업을 수행하십시오. preg_match_all을 사용하여 전역 일치를 수행하십시오.

preg_match_all("/(?:[TM]:|Mob:|Phone:)\s*\K.*?(?=\s*[A-Z]:|$)/mi", "T: 4774 4848 M: 0448 888 899", $matches); 
print_r($matches); 

출력 :

Array 
(
    [0] => Array 
     (
      [0] => 4774 4848 
      [1] => 0448 888 899 
     ) 

) 

입력 T:으로 만,

preg_match_all("/(?:[TM]:|Mob:|Phone:)\s*\K.*?(?=\s*[A-Z]:|$)/mi", "T: 4774 4848", $matches); 
print_r($matches); 

출력 :

Array 
(
    [0] => Array 
     (
      [0] => 4774 4848 
     ) 

) 
관련 문제