2016-07-14 5 views
0

私はこの特定のタグの間にスペース文字のすべての出現箇所

"<content> </content><p>some content</p><content>  </content>" 

のような文字列を持っているを見つけ、私は第2のコンテンツのタグの間にある第一コンテンツタグと5空白文字の間に4つのスペース文字を追加しました。したがって、すべてに9つのスペース文字があります。

コンテンツタグの間にあるすべてのスペース文字と完全に一致する正規表現が必要です。

私はこの

/<content> +<\/content>/g 

を試してみましたが、しかし、これは私の2試合を提供します。私は9つのスペース文字の9つの一致が欲しいです。正しい正規表現は何でしょうか?

+0

コンテンツタグにはスペース以外の文字がありますか?常に4か5のスペースがありますか?そうでない場合、最大スペース数はありますか?スペースや文字や長い文字列を置き換えるトークンは何ですか?すべてのトークンは同じ長さであるか、異なる長さの空間で異なるか、1つの空間ごとに異なりますか? – Armali

+1

はい、他の文字もあります。しかし、私はその中にスペースを持つコンテンツタグだけを探したい。そして各スペース文字は、より長い文字列である何らかのトークンに置き換えなければなりません。このトークンはすべてのスペース文字で同じです。 –

答えて

0

<content>タグの2つの出現(開閉)にスペースがあるため、2つのマッチが得られます。タグの間のスペースをキャプチャし、(本質的には、スペースの数)は、その文字列の長さを出力します

for (/<content>(+)<\/content>/g) { 
    print length $1; 
} 

:あなたが必要なもの

のようなものです。

+1

しかし実際には、コンテンツタグ間のスペースを見つけて、あるトークンで置き換える必要があります。スペースを見つけた後上記の解決策で、私は元の文字列のトークンとタグを再度置き換える必要があります。私はPHPの 'preg_replace'を使って、contentタグのスペース文字を置き換えたい –

0

私はそれが唯一のpreg_replaceで行うことができるとは思わない コンテンツタグ

にスペース文字を置き換えるためにPHPのpreg_replaceを使用します。私はお勧めします:

$str = "<content> </content><p>some content</p><content>  </content>"; 
$str = preg_replace_callback('-<content>.*?</content>-', 
          function($found) 
          { return str_replace(' ', 'TOK', $found[0]); }, 
          $str 
          ); 
関連する問題