Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么';在保留空格的同时,将句子拆分成单词的最有效方法是什么?_Php_String_Split - Fatal编程技术网

Php 什么';在保留空格的同时,将句子拆分成单词的最有效方法是什么?

Php 什么';在保留空格的同时,将句子拆分成单词的最有效方法是什么?,php,string,split,Php,String,Split,假设我有一个由“单词”和空格组成的“句子”,例如: ' foo bar foobar ' 特别地,单词是不包括空格的任何字符集。每个单词之间有一个或多个空格。前导空格和尾随空格是可选的 我想用最简单的方法将单词和空格分成一个集合,例如: [ ' ', 'foo', ' ', 'bar, ' ', 'foobar', ' '] 我尝试使用explode(),将空格字符作为分隔符,但结果当然不包括空格。我尝试了preg_match(),但没有成功,但这可能是因为找不到正确

假设我有一个由“单词”和空格组成的“句子”,例如:

'  foo bar    foobar   '
特别地,单词是不包括空格的任何字符集。每个单词之间有一个或多个空格。前导空格和尾随空格是可选的

我想用最简单的方法将单词和空格分成一个集合,例如:

[ '  ', 'foo', ' ', 'bar, '    ', 'foobar', '   ']
我尝试使用
explode()
,将空格字符作为分隔符,但结果当然不包括空格。我尝试了
preg_match()
,但没有成功,但这可能是因为找不到正确的正则表达式


我可以一个字符一个字符地处理这个句子,但我觉得应该有一个更简单的方法。有什么建议吗?

我尝试使用了以下对我有用的方法:

$s = '  foo bar    foobar   ';

preg_match_all('/\s+|\w+/', $s, $matches);

print_r($matches);
在数组中给出空格和单词:

Array
(
    [0] => Array
        (
            [0] =>   
            [1] => foo
            [2] =>  
            [3] => bar
            [4] =>     
            [5] => foobar
            [6] =>    
        )

)

但这是最有效的方法吗?我将让您来判断:)

也许可以检查($key%2)!=0)?我认为这会给所有的机会。而不是需要做一些疯狂的逻辑。谢谢,这做的工作。