我有一个输入,用户可以在其中键入多个单词,并告诉他们将其与空格分开.所以输入可能如下所示:
foo
Run Code Online (Sandbox Code Playgroud)
或者像这样:
foo bar php js
Run Code Online (Sandbox Code Playgroud)
我如何检查空格,如果有空格,拆分单词,然后将它们全部放入数组中?我将在我的程序中循环遍历该数组.我刚刚接受像这样的字符串处理.
Dan*_*ite 78
看到 explode
// Example 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
Run Code Online (Sandbox Code Playgroud)
ena*_*nam 10
是爆炸将为您做所有事情,foreach可用于再次从数组中检索值.您的完整代码将类似于以下内容:
$str = "foo bar php js";
$arr = explode(" ", $str);
//print all the value which are in the array
foreach($arr as $v){
echo $v;
}
Run Code Online (Sandbox Code Playgroud)
希望这会帮助你.
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;
}
Run Code Online (Sandbox Code Playgroud)
你的样本输入相对平静。如果您相信您的用户能够完美地输入始终由一个空格分隔的合格子字符串,那么最好的选择是explode()
。
如果用户输入可能不仅仅是小写字母,或者您想在提取时进行验证,则可以调用其他更合适的函数。
了解您的业务逻辑将确定此任务的最佳解决方案。
演示:
$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]: []);
Run Code Online (Sandbox Code Playgroud)
输出:
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',
)
Run Code Online (Sandbox Code Playgroud)