例えば、regex_replaceモディファイアを複数回記述して置換を行おうとしても、得られる結果は「xbcdefgかいうえおxbcdefg」ではなく「xbcdefgあいうえおxbcdefg」となり、2回目のregex_replaceは効いていません。
<mt:setvar name="モディファイアテスト" value="abcdefgあいうえおabcdefg" />
<mt:var name="モディファイアテスト" regex_replace="'/a/u','x'" regex_replace="'/あ/u','か'" />
PowerCMS Xではビュー(テンプレート)をPHPのDOMDocumentでパースするため、同一のモディファイアを複数回記述することができません。HTMLの要素にclass属性を複数回記述しても正しく動作しないのと同じです。
複数回置換を行う場合は変数を利用して対応してください。
<mt:setvar name="モディファイアテスト2" value="abcdefgあいうえおabcdefg" />
<mt:var name="モディファイアテスト2" regex_replace="'/a/u','x'" setvar="モディファイアテスト2" />
<mt:var name="モディファイアテスト2" regex_replace="'/あ/u','か'" setvar="モディファイアテスト2" />
<mt:var name="モディファイアテスト2" />
当サイトの検索のようにHTMLタグを伴う複数回の置換を行う場合は検索条件・置換文字列も変数に入れて対応が必要となり少し複雑になりますが、丁寧に整理して記述することで意図した結果を得ることができます。
<mt:setvarblock name="snippet_search_cond">/\n?\s*<span[^>]+>([^<]+)<\/span>/u</mt:setvarblock>
<mt:setvarblock name="snippet_replace"><mark>$1</mark></mt:setvarblock>
<mt:var name="mroonga_snippet" regex_replace="'/\n/u',''" setvar="_mroonga_snippet" />
<mt:var name="_mroonga_snippet" regex_replace="'$snippet_search_cond','$snippet_replace'" setvar="_mroonga_snippet" />
<div class="snippets"><mt:var name="_mroonga_snippet" /></div>