2011-07-29 5 views
1

언어에 비교적 새로운 Im 이후 PHP에서 문자열 토큰 화에 대한 조언을 얻을 수 있는지 궁금합니다.PHP 문자열 토큰 화

나는이있다 :

내가 배열의 인덱스에 이름과 성을 추출하는 문자열 함수를 사용하려면
$full_name = "John Smith" 

.

$arr[0] = "John" 
$arr[1] = "Smith" 

그러나, 기능도 상황을 처리 할 수 ​​있어야합니다 :

$full_name = "John Roberts-Smith II" 
$arr[0] = "John" 
$arr[1] = "Roberts-Smith II" 

또는

$full_name = "John" 
$arr[0] = "" 
$arr[1] = "John" 

시작 위치에 대한 어떤 제안이?

+0

우선은 제 이름과 성을 구성하는 것에 대해 생각해야합니다. –

답변

3

사용 explode()로 처리됩니다

$full_name = "John Roberts-Smith II" 

// Explode at most 2 elements 
$arr = explode(' ', $full_name, 2); 

// Your values: 
$arr[0] = "John" 
$arr[1] = "Roberts-Smith II" 

귀하의 마지막 경우 두 번째 배열에 이름을 배치,하지만 특별하다 요소. 즉 특별한 처리가 필요합니다

// If the name contains no whitespace, 
// put the whole thing in the second array element. 
if (!strpos($full_name, ' ')) { 
    $arr[0] = ''; 
    $arr[1] = $full_name; 
} 

그래서 완성 기능 :

function split_name($name) { 
    if (!strpos($name, ' ')) { 
    $arr = array(); 
    $arr[0] = ''; 
    $arr[1] = $name; 
    } 
    else $arr = explode(' ', $name, 2); 

    return $arr; 
} 
+0

감사합니다. Michael. 나는이 예를 시도 할 것이다. – banditKing

+0

@ user657514'$ full_name '을'$ name' (으)로 변경하십시오 - 방금 오타를 수정했습니다. –

0

이 목적으로 explode() 함수를 사용해야합니다. 가입일

$name_splitted = explode(" ", "John Smith", 2); 
echo $name_splitted[0]; // John 
echo $name_splitted[1]; // Smith 

documentation - 어레이 폭발 (문자열 $ 구분자, 문자열 $ 문자열 [INT $으로 제한])

은 "문자열의 부분 문자열의 배열을 반환

문자열 "구분 기호"에 의해 형성된 경계에서이를 분리하여 형성됩니다. "limit"이 설정되어 있고 양수이면 반환 된 배열에는 나머지 문자열을 포함하는 마지막 요소와 함께 최대 "limit"요소가 포함됩니다. "limit"매개 변수가 음수이면 마지막 "제한"을 제외한 모든 구성 요소가 반환됩니다. 은 "제한"매개 변수가 제로의 경우, 다음이 옵션 제한 PARAM 1.