2011-02-01 17 views
4

この前のquestionの直後に、PHPを使用してテキスト(および可能であれば中カッコ)を一致させるにはどうすればよいですか?PHPの中括弧間のテキストの一致

具体的には、私はWordpressプラグインを作成していて、2つの中括弧の間のすべてのテキストを再フォーマットしようとしています(擬似ウィキマーク)。

私は尋ねた、とマッチング一部の作業を持っている別の以前のquestionで説明した手順に従ってきた - それは私が助けを必要と試合です。

例:

This is some {{text}} and I want to reformat the items inside the curly braces 

所望の出力:

This is some *Text fancified* and I want to reformat the items inside the curly braces 

私が持っているもの(つまりないが働いている):

$content = preg_replace('#\b\{\{`.+`\}\}\b#', "<strong>$0</strong>", $content); 

もし一致かっこをされるなど、あまりにも難しい、私はmatcすることができますhを中括弧をオフセットとして使用し、その後、より単純なテキストマッチ機能を使用して、後に「不快な」中括弧も削除します。

答えて

6
$content = preg_replace('/{([^{}]*)}/', "<strong>$1</strong>", $content); 
+1

これは完璧に機能しました - ありがとう...今:なぜそれは機能しますか? – warren

+1

あなたは '{something}'を変更する必要があるので、 '{'と '}'を入れて、 '(。*)'でそれらの中身を取得する必要がありますが、 {{または}] =^[{|}]のようなものです。私は事を説明するのに吸います、私の上司は仕事が終わる限り気にしません... –

+3

'[^ {|}]'は '[^ {}]'でなければなりません。文字クラスに "or"演算子は必要ないので、 '|'は特別な意味を失い、単に '|'にマッチします。 –

4

(丸いブレース)を使用してマッチグループを形成する必要があります。その後、置換文字列に$1として使用することができますどのような(.+?)試合

preg_replace('#\{\{(.+?)\}\}#', "<strong>$1</strong>", 

。このようにして、あなたはすでに{{と}}を囲んでいます。また、\bは冗長でした。

+2

「丸い中括弧」と呼ばれるかっこについて聞いたことがありません。しかし、そうでなければ+1 – Stephen

+0

これは動作しません... –

+0

@Ronan Dejhero - なぜですか? – warren

関連する問題