2

PHP preg関数(preg_matchなど)で使用する正規表現文字列をcome=upしようとしていますが、これに困惑しています:

この文字列をどのように一致させますか?:

{area-1}some text and maybe a <a href="http://google.com">link</a>.{/area-1}

preg_replace を使用して別の文字列に置き換えたい。

これまでのところ、次のように preg_match で最初のタグを識別できました。

preg_match("/\{(area-[0-9]*)\}/", $mystring);

あなたが助けることができればありがとう!

4

2 に答える 2

4

ネストされたタグがない場合は、次の単純な方法で機能するはずです。

preg_match_all("~{.+?}(.*?){/.+?}~", $mystring, $matches);

結果は で確認できます$matches[1]

于 2010-02-09T06:54:12.387 に答える
0

私は提案します

preg_match_all("~\{(area-[0-9]*)\}(.*?)\{/\1\}~s", $mystring, $matches);

これは、見ているタグ内に他のタグがネストされている場合でも機能areaします。

複数のareaタグが互いにネストされている場合でも機能しますが、正規表現を数回 (ネストのレベルごとに 1 回) 適用する必要があります。

そしてもちろん、試合の内容はTatuの回答で$matches[2]はなく、 になります。$matches[1]

于 2010-02-09T07:37:52.643 に答える