1

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

例子

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

输出

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

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

4

2 回答 2

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);
于 2012-05-03T02:42:31.637 回答
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  ', ...);
    
于 2012-05-03T02:36:30.173 回答