2012-01-24 4 views
2

문자열에서 일부 값을 추출하려고합니다 (db 쿼리 결과). 같은 문자열의 예는 다음과 같습니다문자열에서 PHP 추출 값이 <star>t와 <end>

$data="tostore1:1 = INTEGER: 10000000 
     tostore1:2 = INTEGER: 1000000 
     something else something else 
     tostore2:1 = STRING: 'test1' 
     something else something else 
     tostore2:2 = STRING: 'test2' 
     tostore3:1 = INTEGER: 1000"; 

나는 두 개의 배열을 얻을 것입니다. 하나는 10000000, 'test1'1000을 포함하고 하나는 1000000, 'test2'을 포함합니다. 내가 tostore2:1 값을 추출 할 경우, 시작이 tostore2:1 나는에 가장 최적화 된 방법을 찾고 있어요

줄의 끝 @ 말 CR LF 수 대안

는 않는

+0

를 사용하십니까? – PeeHaa

답변

1

제목에 명시된 바와 같이 나는 " 톤"이나 " "이 표시되지 않는 간단한 정규 표현식

$result = array(); 
$pattern = "/tostore\d+:(\d+)\s+=\s+[A-Z]+:\s+('?)([\d\w]+)(\2?)/i"; 
preg_match_all($pattern, $data, $m); 

$keys = $m[1]; 
$values = $m[3]; 
$len = count($keys); 
for($i=0;$i<$len;$i++){ 
    $result[$keys[$i]][]=$values[$i]; 
} 

$arr1 = $result[1]; 
$arr2 = $result[2];