strip_tagsモディファイアとremove_htmlモディファイアの違い

strip_tagsモディファイアとremove_htmlモディファイアの違い

Posted at May 11,2010 11:55 PM
Tag:[MovableType, remove_html, strip_tags]

Twitterでriatwさんの次のつぶやきをみつけたので本エントリーにて紹介します。

strip_tagsモディファイアとremove_htmlモディファイアの違い

Movable Typeのstrip_tagsモディファイアとremove_htmlモディファイアは、どちらもテンプレートタグの出力結果からHTMLタグを取り除く機能があります。次のように記述すれば、ブログ記事本文のHTMLタグを取り除きます。

<mt:EntryBody remove_html="1" />

または

<mt:EntryBody strip_tags="1" />

そして、それぞれのモディファイアの機能は全く同じです。どちらもMT::Util::remove_htmlを起動しています。「strip_tagsはremove_htmlのエイリアスです」とコメントにも記載されています。

remove_htmlモディファイアのソースコード

###########################################################################
 
=head2 remove_html
 
Removes any HTML markup from the input.
 
=cut
 
sub _fltr_remove_html {
    my ($str, $val, $ctx) = @_;
    MT::Util::remove_html($str);
}

strip_tagsモディファイアのソースコード

###########################################################################
 
=head2 strip_tags
 
An alias for L<remove_html>. Removes all HTML markup from the input.
 
=cut
 
sub _fltr_strip_tags {
    my ($str, $val, $ctx) = @_;
    return MT::Util::remove_html($str);
}

MT::Util::remove_htmlは、次の実装になっています。

sub remove_html {
    my($text) = @_;
    return '' if !defined $text;  # suppress warnings
    {
        use bytes;
        $text =~ s/(<\!\[CDATA\[(.*?)\]\]>)|(<[^>]+>)/
            defined $1 ? $1 : ''
            /geisx;
        $text =~ s/<(?!\!\[CDATA\[)/&lt;/gis;
    }
    return $text;
}

これだけでは何なので、それぞれのモディファイアがどのバージョンで実装されたかを調べました。

  • remove_html:Movable Type 1.4 あたりで追加
  • strip_tags:Movable Type 4.0 で追加

ということで、remove_htmlが大先輩でした。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)