2011-02-16 4 views
9

사용자가 여러 단어로 입력 할 수있는 입력이 있으며 공백으로 구분해야한다는 입력이 있습니다. 그래서 입력은 다음과 같이 보일 수 있습니다 :모든 공백이있는 PHP에서 문자열 분할

foo 

또는 같은를 :

foo bar php js 

나는 공간에 대한 방법을 확인 할 수 있으며, 공간이있는 경우, 단어, 다음 배열로 모든 것을 넣어 나누? 나는 내 프로그램에서 그 배열을 반복 할 것이다. 나는 이런 식으로 문자열 처리를 처음 접했을 뿐이다. 다니엘이 말한 것처럼

+11

[터져 죽자.] (http://www.php.net/explode) – BoltClock

답변

43

explode()는 이런 상황에 대한 완벽한, explode

// Example 1 
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 
0

를 참조하십시오. preg_split() (단순한 구분 기호 대신 정규식을 받아들이며보다 복잡한 패턴에 대한 입력을 깨뜨릴 수 있기 때문에 순전히 나중에 참조 할 수도 있습니다).

+2

'split'이되지 않으며 피해야한다. regex가 필요하다면 대신'preg_split'을 사용하십시오 ... – ircmaxell

+0

@ircmaxell이를 반영하기 위해 업데이트되었습니다. 생산 환경이 최신 버전보다 뒤 떨어지는 것은 불행한 일입니다. 5.3에서 일부 사항이 사용되지 않습니다. – Endophage

8

explode은 모든 작업을 수행하며 foreach을 사용하여 배열에서 값을 다시 검색 할 수 있습니다. 전체 코드는 다음과 같습니다.

$str = "foo bar php js"; 
$arr = explode(" ", $str); 

//print all the value which are in the array 
foreach($arr as $v){ 
    echo $v; 
} 

희망이 도움이 될 것입니다.

1

대니얼은 이미 슬립 파트에 대해 게시했습니다. 공간 파트에 대한 점검을 추가하겠습니다.

$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pizaa = trim($pizza); 
if(strpos($pizza,' ') >= 0) 
{ 

$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 
}else { 
    echo $pizza; 
} 
0

최적화를 위해 폭발 기능을 사용하기 전에 여분의 공백을 제거하는 것이 좋습니다. 예 : "foo bar php js "이있는 경우이 문자열은 분해 기능을 사용하기 전에 "foo bar php js"이되어야합니다. 이 코드를 시도 할 수 있습니다 :

$charSet = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $charSet); 
$charSet = rtrim($charSet); 
$charSetArray = explode(" ", $charSet); 
echo $charSetArray[0]; 
echo $charSetArray[1];