0

{@if condtwo}一致するからコンテンツを取得するにはどうすればよい{!if}ですか?

{@if condtwo}
    {@if condone}
        show this if condone is true
    {!if}
other contents
{!if} <- matching {!if}

使ってみpreg_match_allました。これが私の正規表現です:

/([\s]*?{@IF(.*?)}[\s]*?)(.+?)([\s]*?{!$IF}[\s]*?)/si

{@if condtwo}問題は、すべてのコンテンツをnextからしか取得できないことです{!if}

{@if condtwo}
    {@if condone}
        this is a table
    {!if}
4

1 に答える 1

1

わかりました、正規表現を使用しないと言ったのは知っていますが... 嘘をつきました。これで十分ですし、おそらくこれが最善の方法でもあります。

/{@if(.+?)}(((?>[^{}]+)|(?R))*){!if}/si

これが実際のデモです。また、再帰正規表現のドキュメントも参照してください。

于 2012-05-26T00:45:43.957 に答える