Movable Typeのグローバル・モディファイア「regex_replace」と「replace」

  • 投稿者:
  • カテゴリ:
このエントリーをはてなブックマークに追加

20140414130829_blogpix.png

Movable Typeのグローバル・モディファイアであるregex_replaceとreplaceを使うとMTタグの値の置換ができます。

例えば、ブログ記事の本文中のfooをbarに置換したい場合などは、下記のように書くとそれぞれfooをbarに変換して書き出されます。リンクにtarget="_blank"を挿入したい場合などに使えます。

<mt:entrybody regex_replace="/foo/","bar">
<mt:entrybody replace="foo","bar">

regex_replaceとreplaceの違いはregex_replaceを使うと正規表現を使って置換ができるということです。

正規表現

Movable Typeでは<mt:Version>タグを使うと、使用しているMTのバージョンを表示させることが出来ます。

テンプレートに下記のように書いてあると
Movable Type <mt:Version>

下記のように書き出されます。
Movable type 6.0.3

某サイトで上記のようにフッターにバージョンを表示させていたのですが、先日、MTのセキュリティーに関するアップデートがあり、バージョンをすべて表示させておくのも考えものだなと...

それでフッターには「Movable Type 6」とだけ表示させたいなと思ったのですが、<mt:Version>タグを使うと6.0.3のようにバージョンはすべて表示されてしまいます。

そこで、<mt:Version>に正規表現が使えるregex_replaceを使って6.0.3の6だけ表示させるようにしました。正規表現を使ってと言っても、正規表現は書けないのでネットで調べつつコピペみたいなものですが...。それで、書いたものが下記になります。

<$MTVersion regex_replace="/\..*/",""$>

「\.」でエスケープして正規表現の「.」ではないことにして、2番目の「.」で何でもよい任意の文字を「*」で0個以上と設定して、「.」で始まり何でもいい文字で最後までがマッチするようにしました。

ちなみに下記のように書いても同じ結果が得られます。「\.」はおなじですが、「[0-9]*」で0から9の数字が0個以上の場合にマッチするようになります。ただしこのままだと「6.0.3」の場合、「.0」で処理が終了してしまうので、同じ文字列がある場合繰り返して処理されるように/のあとに「g」を付けます。

<$MTVersion regex_replace="/\.[0-9]*/g",""$>

このように、ファンクションタグに「regex_replace」や「replace」を使うと、htmlなどに書き出す時にだけ置き換えをしたりすることが出来ます。

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