2011-02-16 72 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];