2011-11-24 5 views
1

에 서식 첨부 캐릭터 라인을 분할하는 등의 :정규 표현식 내가 보이는 문자열을 연관 배열

KEY1,"Value"KEY2,"Value"Key3,"Value" 

내가 연관 배열 필요가 키/값의 수에 차이가 항상 것이 문자열 :

array (
    'KEY1' => 'Value', 
    'KEY2' => 'Value', 
    'KEY3' => 'Value' 
); 

의 데이터가 문자열에 포함되어 있으면 정규 표현식이 가장 좋을까요?

답변

2

당신이 할 수있는 값이이 값에 "를 포함하지 않는 가정 :

$str = 'KEY1,"Value1"KEY2,"Value2"Key3,"Value3"'; 
$pieces = preg_split('/(?<=[^,]")/',$str,-1,PREG_SPLIT_NO_EMPTY); 
$result = array(); 

foreach($pieces as $piece) { 
     list($k,$v) = explode(",",trim$piece); 
     $result[$k] = trim($v,'"'); 
} 

See it in action!

+0

나머지 인용문을 제거한 후 완벽하게 작동합니다 ... 감사합니다. –

+0

@MikeL .: 고쳐졌습니다. 가리키는 주셔서 감사합니다. – codaddict

0

값간에 키가 변경되면 preg_split()가 필요합니다. 키가 항상 같은 경우에는 explode()가 적절해야합니다.

+0

폭발이 작동하지 않습니다, 나는 앞에 오는 찾을 수있는 정규 표현식이 필요합니다 키로, 무엇이 값으로 ""들어 있는지. 나는 정규 표현식으로는별로 좋지 않다. –

1
php> $str = 'KEY1,"Value"KEY2,"Value"Key3,"Value"'; 

php> $hash = array(); 

php> preg_match_all("/(.*?),\"(.*?)\"/", $str, $m); 

php> foreach($m[1] as $index => $key) { 
... $hash[$key] = $m[2][$index]; 
... } 

php> var_dump($hash); 
array(3) { 
    ["KEY1"]=> 
    string(5) "Value" 
    ["KEY2"]=> 
    string(5) "Value" 
    ["Key3"]=> 
    string(5) "Value" 
} 
관련 문제