2010-12-21 11 views
1

私はテキストの段落に次のようなパテンがあり、それを段落から消えるように置き換える必要があります。 sendtenceがCONSULTANTS [45416,2010-05-11]含まpreg_replaceが私が期待していることを実行していません

は、私は以下を試みた[]と[]内のこれらの[]ではなく、文字内のすべては可能性が何に

を削除する必要があるが、これは唯一の[]

を削除します
$par = preg_replace('/[\[*\]]/','',$par); 
あなたが行うことができます

答えて

6

$par = preg_replace('/\[.*?\]/s','',$par); 

説明:

012交換が少し速くあなたができるようにする

$par = preg_replace('/\[[^\]]*\]/s','',$par); 

説明:

/ - Start delimiter 
\[ - A literal [ 
[ - Start of character class 
^ - Char class negator 
] - End of character class 
\] - A literal ] 
/ - End delimiter 
+0

あなたの説明はとても鮮明で、徹底的に泣かせてくれました。 – cbrandolino

2

ローランド、

何が一致しようとしていることである。

[\[*\]] 

'['、 '*'、 ']'のいずれかの文字。本当に欲しいのは、 '['で始まり ']で終わるパターンです。その間には「]」の文字はありません。だから、正しいパターンは次のようになります。だから、

\[[^\]]*\] 

この:

$par = preg_replace("/\[[^\]]*\]/", "", $par); 

が動作するはずです。

ありがとうございました。

+0

[45416,2010-05-11] – Roland