2012-04-17 8 views
0

は、次のことを考えてみましょう:文字列からラベルを削除するには?

$string = "A string with {LABELS} and {more|232} {lbls} and some other stuff"; 
echo str_replace('/(\{.*?\})/', '', $string); 

私は(ラベルが{brackets}間の任意のテキストである)すべてのラベルを削除しようとしています。予想される出力は:

A string with and and some other stuff 

しかし、私は、元の文字列だっ取得:私は間違って

A string with {LABELS} and {more|232} {lbls} and some other stuff 

をしていますか?正規表現と

+1

あなたの2つの文字列は同じです!?!?! – ManseUK

+0

あなたの期待した結果と実際の結果は同じです。 –

+0

私は期待と元の違いは見ません。 – elmo

答えて

2

あなたが代わりにpreg_replaceを使用する必要があります:

$string = "A string with {LABELS} and {more|232} {lbls} and some other stuff"; 
echo preg_replace('/\{.*?\}/', '', $string); 
0

試してみてください。

echo preg_replace('/\{.*?\}/', '', $string); 
+0

これは、文字列の最初の '{'と最後の '}'の間のすべてに一致します。 – kapa

+0

ありがとう、私は疑問符を忘れてしまった –

0
preg_replace('/\{.*?\}/','',$str) 
0

はにpreg_replaceを使用してください、しかしはまた、あなたは、スペースをフィルタリングして、中括弧に一致していることを確認するために、わずかに異なる正規表現が適切

$string = "A string with {LABELS} and {more|232} {lbls} and some other stuff"; 
echo preg_replace('/\s*\{[^}]*\}/', '', $string); 

与える必要がありますと文字列とし、いくつかの他のものを

関連する問題