Movable Typeで置換を行う

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/」を「/」に置換して出力 -->
かいうえおかいうえお

参考サイト

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2025年5月
 123
45678910
11121314151617
18192021222324
25262728293031