MySQL
kurumin
プログラミングのーと
PowerCMSXでは、テンプレート変数に対して regex_replace を使うことで、正規表現による文字列の変換や抽出が可能。
例えば、変数 b.style に "txt-img" のような "〇〇〇-△△△" 形式の文字列が入っている場合、ハイフンの前後をそれぞれ別の変数に分けて取得するには以下のように記述する。
<mt:ignore><!--
「〇〇〇-△△△」形式の文字列から、
前半(〇〇〇)と後半(△△△)を正規表現で抽出する(例:txt-txt, txt-img)
--></mt:ignore>
<mt:SetVarBlock name="regexp">/^([^-]+)-([^-]+)$/</mt:SetVarBlock>
<mt:var name="b.style" regex_replace="'$regexp','\$1'" setvar="l_style">
<mt:var name="b.style" regex_replace="'$regexp','\$2'" setvar="r_style">
<!-- 出力例 -->
<mt:Var name="l_style"> <!-- txt -->
<mt:Var name="r_style"> <!-- img -->$1, $2 の扱いについてPowerCMSXではテンプレート内で $1, $2 をそのまま使うと、テンプレート変数として解釈されてしまうため、正規表現の置換式内で使用する場合は \ を前に付けて \$1 や \$2 とする必要がある。
連想配列のキー指定も可能。
通常の変数の取得に特化mt:varより若干高速。なるべくこっちを使う。
<mt:var name="hoge" trim let="hoge_after"><mt:include module="g_mod_parse_blocks_two_column" workspace_id="1" b="b">item.summaryの内容を改行で区切って変数summary_listに代入し、1つ目の要素を出力している例。
<mt:var name="item.summary" split="\n" let="summary_list">
<mt:var name="summary_list.0">