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

さて、ここに1つのオプションがあります:

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_chunkchunk_size 2 で に渡します。

    これで、2 要素配列の配列ができました。

    array(array('Word', '  '), array('with', '  '), ... )
    
  4. その結果を-array_mapのコールバックで にjoin渡します。これにより、文字列の各ペアが 1 つの文字列に結合され、目的の結果が得られます。

    array('Word  ', 'with  ', ...);
    
于 2012-05-03T02:36:30.173 に答える