2011-02-16 105 views
9

我有一個輸入,用戶可以鍵入多個單詞,並告訴他們用空格分隔它。因此,輸入可以是這樣的:在每個空白處分割一個PHP字符串

foo 

或像這樣:

foo bar php js 

我如何檢查的空間,如果有空間,分割的話,那麼把它所有到一個數組?我將在我的程序中循環訪問該數組。我只是新來的字符串處理像這樣。

+11

[KABOOM](http://www.php.net/explode) – BoltClock 2011-02-16 17:58:39

回答

43

explode

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

正如丹尼爾說,explode()非常適合這種情況。你可能還想看看preg_split()(純粹是爲了將來的參考),因爲它接受一個正則表達式,而不僅僅是一個簡單的分隔符,並且允許你在一個更復雜的模式上分解輸入。

+2

`split`已被廢棄,應儘量避免。如果您需要使用正則表達式,請使用`preg_split`而不是... – ircmaxell 2011-02-16 18:03:16

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

daniel已經發布關於滑動部分,讓我加上空間部分的檢查。

$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];