私はいくつかの助けが必要です。私のデータ。私の正規表現パターンが失敗しました
{foreach $page_list as $page}
<li><a href="" title="{$page->name}">{$page->name}</a></li>
{/foreach}
私のパターンは、
~\{foreach\s\$(.+)\sas\s\$([^\{]+)\}([^\{]+)\{\/foreach\}~
しかし、機能しません。なにが問題ですか ?
私はいくつかの助けが必要です。私のデータ。私の正規表現パターンが失敗しました
{foreach $page_list as $page}
<li><a href="" title="{$page->name}">{$page->name}</a></li>
{/foreach}
私のパターンは、
~\{foreach\s\$(.+)\sas\s\$([^\{]+)\}([^\{]+)\{\/foreach\}~
しかし、機能しません。なにが問題ですか ?
2つの{foreach ...}領域の間の線を明示的に除外しようとしているパターンは、{'文字には一致しませんが、文字列には2つあります。そのミドルエリアのマッチは、{/ foreach}が続かないどこかで壊れているので、パターン全体が一致しません。
パターン全体が.*
である必要があります。バックトラッキングを利用して、閉鎖{/foreach}
をキャッチします。もちろん、これはリスト全体を1つのものとして誤ってマッチさせますが、一般的に正規表現は引用符とマッチできません(技術的には不規則でパフォーマンスが悪い逆参照はありません)。
それは 's(PCRE_DOTALL)'も必要と思われました – kirilloid
@kirilloidはいありがとう –
何が起こりますか? 「うまくいかない」とはどういう意味ですか?ご質問にお答えください。 –