Movable Typeで置換処理を行いたい場面があったので、実装方法についてメモ。
サンプルコード
まずはregex_replaceを使った置換処理を試してみます。
絶対パスをルートパスに置換する例です。
<$mt:SetVar name="url" value="https://example.com/about/"$> <!-- 通常の出力 --> <$mt:Var name="url"$> <!-- 「https://example.com/」を「/」に置換して出力 --> <$mt:Var name="url" replace="https://example.com/","/"$>
再構築を行うと、想定通り置換できました。
<!-- 通常の出力 --> https://example.com/about/ <!-- 「https://example.com/」を「/」に置換して出力 --> /about/
置換前後の文字列には変数を使用することもできます。
<$mt:SetVar name="before" value="https://example.com/"$> <$mt:SetVar name="after" value="/"$> <$mt:SetVar name="url" value="https://example.com/about/"$> <!-- 通常の出力 --> <$mt:Var name="url"$> <!-- 「https://example.com/」を「/」に置換して出力 --> <$mt:Var name="url" replace="$before","$after"$>
先ほどと同様に再構築できました。
<!-- 通常の出力 --> https://example.com/about/ <!-- 「https://example.com/」を「/」に置換して出力 --> /about/
置換対象の文字列が複数ある場合どうなるかを試してみます。
<$mt:SetVar name="text" value="あいうえおあいうえお"$> <!-- 通常の出力 --> <$mt:Var name="text"$> <!-- 「https://example.com/」を「/」に置換して出力 --> <$mt:Var name="text" replace="あ","か"$>
再構築を行うと、全ての置換対象文字列が置換されました。
<!-- 通常の出力 --> あいうえおあいうえお <!-- 「あ」を「か」に置換して出力 --> かいうえおかいうえお
次にregex_replaceを試してみます。
regex_replaceはregex_replaceと違い、正規表現を使った置換も可能です。
<$mt:SetVar name="url" value="あいうえおあいうえお"$> <!-- 通常の出力 --> <$mt:Var name="url"$> <!-- 「https://example.com/」を「/」に置換して出力 --> <$mt:Var name="url" regex_replace="/あ/","か"$>
再構築を行うと、置換対象文字列のうち1つ目の文字列のみが置換されました。
<!-- 通常の出力 --> あいうえおあいうえお <!-- 「https://example.com/」を「/」に置換して出力 --> かいうえおあいうえお
正規表現のgオプションを設定することで、全ての置換対象文字列を置換できます。
<$mt:SetVar name="url" value="あいうえおあいうえお"$> <!-- 通常の出力 --> <$mt:Var name="url"$> <!-- 「https://example.com/」を「/」に置換して出力 --> <$mt:Var name="url" regex_replace="/あ/g","か"$>
これで全ての置換対象文字列を置換できました。
<!-- 通常の出力 --> あいうえおあいうえお <!-- 「https://example.com/」を「/」に置換して出力 --> かいうえおかいうえお
コメントが承認されるまで時間がかかります。