Movable Type プラグインディレクトリ

Regex

ユーザーが正規表現を自由に定義し、その正規表現を基にエントリーの内容を書き換えたり、条件分岐したりできます。

制作者: Brad Choate / フリー
ダウンロードサイト: Brad Choate: Regex Plugin
http://www.bradchoate.com/weblog/2002/07/27/mtregex

インストール方法

  1. ダウンロードしたアーカイブを解凍します。
  2. 解凍して生成された「regex.pl」ファイルを、Movable Typeの「plugins」ディレクトリにアップロードします。
  3. 同じく生成された「regex.pm」と「postproc.pm」をMovable Typeの「extlib」ディレクトリ内に「bradchoate」というディレクトリを作成し、そこにアップロードします。

使い方

<MTRegexDefine>で正規表現を定義して、regexフィルターや<MTIfMatches>で使用すると言うのが主な使い方となります。Regexプラグインは以下のタグを用意しています。

MTRegexDefine

正規表現を定義するコンテナタグです。以下のアトリビュートに対応しています。

  • name
  • 正規表現に名前を付けられます。名前を付けると、特定の正規表現のみを参照することができます。

  • no_html="1"
  • HTMLタグは正規表現のマッチの対象とならなくなります。

MTRegexDefineは以下のように使用します。

<MTRegexDefine name="regex1">s|:-D|<img src="/images/smiley.gif" height="32" width="32">|g</MTRegexDefine>

この例は、「:-D」という文字列を画像に置換する正規表現です。

定義した正規表現を使用するにはregexフィルターを使用します。

<$MTEntryBody regex="1"$>

とすると、<$MTEntryBody$>の内容が置換対象となります。

<MTRegexDefine name="regex1" no_html="1">s|google¥(([^¥)]+)¥)|<a href="http://www.google.co.jp/search?q=$1">$1</a>|ig</MTRegexDefine>
<MTRegexDefine name="regex2">s|:-D|<img src="/images/smiley.gif" height="32" width="32">|g</MTRegexDefine>
<MTRegexDefine name="regex3">s|www¥.so-net¥.co¥.jp|www.so-net.ne.jp|g</MTRegexDefine>

この様に正規表現に名前を付けることもできます。regex1の例は「google(単語)」という記述を、Googleへのリンクに置換する正規表現です。

<$MTEntryTitle regex="regex1"$>         regex1の正規表現のみが有効となります
<$MTEntryBody regex="1"$>               全ての正規表現が有効となります
<$MTEntryMore regex="regex1 regex2"$>   regex1とregex2の正規表現が有効となります
<$MTCommentBody regex="s/this/thatg/"$> 独自の正規表現を指定します

最後の書き方では正規表現に「$」を使用することはできません。$1などを使用したい場合は<MTRegexDefine>で事前に定義してください。

MTIfMatches/MTIfNotMatches

正規表現にマッチした/マッチしないものだけを表示する条件分岐用のコンテナタグです。以下のアトリビュートに対応しています。

  • var
  • MTタグの内容を正規表現のマッチング対象とする場合に使用します。指定する場合は、タグを意味する<、>、$と先頭の「MT」を取り除きます。

  • expr
  • MTタグをアトリビュート付きで呼び出したい場合はvarではなくexprを使用します。指定する場合は、タグを意味する<、>、$を除き[ ]で囲みます。

  • value
  • 正規表現ではなく文字列と比較する場合に使用します。

  • pattern
  • 正規表現を指定します。

MTIfMatches/MTIfNotMatchesは以下のように使用します。

<MTEntries>
 <MTIfMatches pattern="m/Movable Type/">
  <$MTEntoryBody$>
 </MTIfMatches>
</MTEntries>

「Movable Type」という文字列を含むエントリーのみを表示します。

<MTEntries>
 <MTIfNotMatches var="EntryCategory" pattern="m/(moblog|diary)/">
  <$MTEntoryBody$>
 </MTIfMatches>
</MTEntries>

カテゴリが「moblog」「diary」以外のエントリーを表示します。

<MTComments>
 <MTIfNotMatches expr="[MTCommentAuthorLink show_url='1']" pattern="m/a href/">
  <$MTCommentBody $>
 </MTIfMatches>
</MTComments>

URLが入力されたコメントのみを表示します。

<MTIfMatches var="BlogEntryCount" value="1000">
  <blink>1,000個エントリー達成!</blink>
</MTIfMatches>

エントリーの数が1,000個の場合表示されます。

カスタマイズ情報

特になし

その他付加情報

特になし


トラックバック

トラックバック URL

このページのトップへ