preg_split由包括尾随空格的单词组成

时间:2012-05-03 02:00:02

标签: php whitespace preg-split

在这个例子中preg_split中使用的正则表达式是什么?

实施例

<?$a='Word  with  white   trailing   spaces.    ';

输出

Array(
[0] => 'Word  ',
[1] => 'with  ',
[2] => 'white   ',
[3] => 'trailing   ',
[3] => 'spaces.    '
)

我不知道在php中的正则表达式。我只需要最小化代码。也许有人可以帮助我并解释一下回答的正则表达式

2 个答案:

答案 0 :(得分:1)

编辑:我看到OP需要解释。 基本上()将一个单词\ w +和任何非单词\ W +组合起来直到它找到一个新单词@)。所以(这里的任何东西)= $ 1

$str = "Word  with  white   trailing   spaces.    ";


$split = preg_split("/(\w+\W+)/", $str, null, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);

var_dump($split);

答案 1 :(得分:0)

嗯,这是一个选项:

array_map('join', 
  array_chunk(
    preg_split('/(\s+)/', $a, null, 
               PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY),
    2));

逐步采取行动。

  1. 按任意数量的空格分割 - \s+

  2. 但请记住空白 - 这是括号和PREG_SPLIT_DELIM_CAPTURE标志。

    这为您提供了一个如下所示的数组:

    array('Word', '  ', 'with', '  ', 'white', '   ',
          'trailing', '   ', 'spaces.', '    ')
    
  3. 将结果传递给array_chunk,chunk_size为2。

    现在我们有一个2元素数组的数组:

    array(array('Word', '  '), array('with', '  '), ... )
    
  4. 将结果传递给array_map,回调为join - 将每对字符串连接成一个字符串,并为我们提供所需的结果:

    array('Word  ', 'with  ', ...);