我有一个输入框,用户可以在其中输入多个单词,并被告知使用空格进行分隔。因此,输入可能看起来像这样:
foo
或者像这样:foo bar php js
我该如何检查字符串中是否有空格,如果有空格,如何拆分单词并将其放入数组中?我会在程序中循环遍历该数组。我对这种字符串处理方式还比较陌生。
我有一个输入框,用户可以在其中输入多个单词,并被告知使用空格进行分隔。因此,输入可能看起来像这样:
foo
或者像这样:foo bar php js
我该如何检查字符串中是否有空格,如果有空格,如何拆分单词并将其放入数组中?我会在程序中循环遍历该数组。我对这种字符串处理方式还比较陌生。
参见explode
// Example 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
Daniel已经讲解了分割部分,让我来添加空格检查部分。
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pizza = trim($pizza);
if(strpos($pizza, " ") !== false)
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
}else{
echo $pizza;
}
$pizza = preg_replace('!\s+!', ' ', $pizza);
这样您就可以得到漂亮的单个空格分隔的单词,然后可以将其分解为数组值。 - nh-labsexplode()
。$input = "foo bar, php js double-space apo'strophe 9 ";
echo 'explode(): '; var_export(explode(' ', $input));
echo "\npreg_split(): "; var_export(preg_split('/ +/', $input, null, PREG_SPLIT_NO_EMPTY));
echo "\nstr_word_count(): "; var_export(str_word_count($input, 1));
echo "\npreg_match_all(): "; var_export(preg_match_all('/[a-z]+/', $input, $output) ? $output[0]: []);
输出:
explode(): array (
0 => 'foo',
1 => 'bar,',
2 => 'php',
3 => 'js',
4 => '',
5 => 'double-space',
6 => 'apo\'strophe',
7 => '9',
8 => '',
)
preg_split(): array (
0 => 'foo',
1 => 'bar,',
2 => 'php',
3 => 'js',
4 => 'double-space',
5 => 'apo\'strophe',
6 => '9',
)
str_word_count(): array (
0 => 'foo',
1 => 'bar',
2 => 'php',
3 => 'js',
4 => 'double-space',
5 => 'apo\'strophe',
)
preg_match_all(): array (
0 => 'foo',
1 => 'bar',
2 => 'php',
3 => 'js',
4 => 'double',
5 => 'space',
6 => 'apo',
7 => 'strophe',
)
"foo bar php js "
,那么在使用explode函数之前,这个字符串必须变成"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];
preg_split('/ +/', $charSet);
来提高效率。 - Jeffexplode()
非常适合这种情况。您可能还想查看preg_split()
(仅供参考),因为它接受正则表达式而不仅仅是简单的分隔符,并且可以让您按更复杂的模式拆分输入。This will work if there is no space between the input string.`
$pieces = explode(" ", $pizza);
if(count($pieces > 1)) {
foreach($pieces as $piece) {
echo $piece;
}
}
else {
echo $userInput;
}
?>`
Explanation :
After exploding the string into pieces. Firstly it checks if we have more items in array i.e. $pieces if yes it will print via foreach loop otherwise it will simply print the user input.