2010-12-02 4 views
4

다음 패턴이있는 PHP 문자열을 파싱 중입니다.PHP에서 공백, 숫자 및 따옴표로 문자열을 분할하는 방법은 무엇입니까?

VARIABLE Key1 Value1 Key2 Value2 Key3 Value3 ... 

다음과 유사합니다.

JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support' 

또는

SOMEVARIABLE 1 "Value1" 2 'Value2' 

이 줄은 따옴표로 묶지 않은 문자열로 시작하며 단일 또는 큰 따옴표로 묶인 문자열 및/또는 숫자. 하나 또는 여러 개의 키 값 쌍을 가질 수 있습니다.

두 가지 방법으로 문자열을 분할해야합니다.

숫자가 아닌 따옴표없는 문자열을 먼저 얻습니다.

C : 고객 지원

또는

  1. SOMEVARIABLE
  2. 1 : 값 1
  3. 2 : 값 2

내 생각을 :

내가 문자열을 분할하고를 반복 생각 그것은 테스트하는 것입니다 :

for 1 : 값이 숫자가 아니고 따옴표로 묶이지 않은 경우 변수 이름입니다.

for 2+ : 쉬운 방법은 키와 값 :

질문 :

어떻게 키/값을 구별 할 수 있습니까?

답변

11

CSV로 처리하고 반복하여 나눕니다. 변수는 [0]이고 키는 [1]부터 시작하여 홀수이며 값은 [2]입니다.

var_dump(str_getcsv("JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support'", 
    ' ', "'")); 
array(5) { 
    [0]=> 
    string(8) "JOBGRADE" 
    [1]=> 
    string(1) "P" 
    [2]=> 
    string(17) "Parttime Employee" 
    [3]=> 
    string(1) "C" 
    [4]=> 
    string(16) "Customer Support" 
} 
+0

가 감사 키 & 결과 값을 추가 //. CSV 사용에 대해서는 생각해 본 적이 없습니다. –

1

처음 사용 변수 문자열() 폭발은 모든 부분은 하나의 공백으로 구분하세요 : http://php.net/manual/en/function.explode.php

$variables = explode("JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support'", ' '); 

// 내가 첫 번째 항목을 사용하지 것이다 그래서 그것을 지우고 나중에 제목으로 유지하십시오.

$var_name = array_shift($variables); 
훌륭한 솔루션 -

은 두 번째 항목을 통해 루프 (2 단계) 및 배열을

$result = array(); 

for ($i = 0; $i < count($variables); $i = $i +2) { 
    $result[$variables[$i]] = $variables[$i + 1]; 
} 

print_r($result); 
관련 문제