2012-05-03 8 views
1

この例では、preg_splitで使用する正規表現とは何ですか?preg_split後ろに空白を含む単語

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

出力

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

私はPHPで正規表現でさっぱりだが。私はちょうどコードを最小化する必要があります。手順によってそれを取っ

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

:たぶん誰かが私を助けると答えた正規表現

+0

オンデマンドでコードを書くのではなく、実際に達成しようとしたことで問題に遭遇した場合に役立ちます。 – jprofitt

+0

@jprofittしかし、このような簡単なリクエストを担当者には控えてもらうのは魅力的です。 – philwinkle

+0

(\ w +)は、スペースを除いたすべての単語と一致する必要があります。またはスペースをそのままに保つ必要がありますか? – Philip

答えて

0

について少し説明することができさて、ここで一つの選択肢です。

  1. 空白の任意の量によって分割 - \s+

  2. しかし、空白文字を覚えて - それは括弧とPREG_SPLIT_DELIM_CAPTUREフラグです。

    これはあなたにこのように見える配列を与える:

    array('Word', ' ', 'with', ' ', 'white', ' ', 
         'trailing', ' ', 'spaces.', ' ') 
    
  3. は、今では2要素の配列の配列を持つ2

    のCHUNK_SIZEでarray_chunkに結果を渡します

  4. array_mapのコールバックをjoinに渡すと、各文字列のペアが結合されます。int O、1つの文字列、および私たちに望ましい結果が得られます。

    array('Word ', 'with ', ...); 
    
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); 
+0

...またはあなたはそれを行うことができます。しかしそれはあまりにも単純です。 :) –

+0

@ MarkReed :)それはなぜ空のキー/パリにスローするか?したがって、PREG_SPLIT_NO_EMPTYは、あなたの例から取ったbtw :) – Philip

関連する問題