The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Tripletail::TagCheck - HTMLのタグのチェック

SYNOPSIS

  my $tc = $TL->newTagCheck;
  $tc->setAllowTag(':BR;SMALL;STRONG');
  
  my $checked_html = $tc->check('<font size="+7">foo</font><small>bar</small>');
  if ($check_html eq 'foo<small>bar</small>') {
      # true
  }

DESCRIPTION

HTML のタグのチェックを行い、不必要なタグを削除する。

METHODS

$TL->newTagCheck
  $checker = $TL->newTagCheck

Tripletail::TagCheck オブジェクトを作成。

check
  $checked_html = $checker->check($html)

渡されたHTMLを処理し、その結果を返す。

setTagBreak
  $checker->setTagBreak('line')

'none', 'line', 'block'が指定可能。デフォルトは'line'。 タグを自動で閉じるかどうかを設定する。

none

自動で閉じない。

line

行末、または文字列の末尾で閉じる。

block

改行が二つ続いた位置、または文字列の末尾で閉じる。

  $checker->setAutoLink(1)

テキスト中に含まれるURLを自動で<a href="...">でリンクにするかどうか。 0の場合、リンクにしない。 1の場合、リンクにする。

デフォルトは1。

setAllowTag
  $checker->setAllowTag(':HR:BR;STRONG')

使用を許可するタグを指定する。ここで指定されなかったタグは許可されていないもの として、"<"と">"を"&lt;"と"&gt;"にエンコードする。書式は次の通り。

":TAG"または";TAG"で一つのタグを表す。 このような指定を任意の個数だけ繋げる事が出来る。

":"で指定されたタグは、その閉じタグの存在が禁止される。 禁止された閉じタグは削除される。

";"で指定されたタグは、その閉じタグの存在が要求される。 閉じタグが存在しない場合は、setTagBreakで指定された方法に従って 閉じタグが追加される。

";A(HREF,TARGET)"のように"(...)"で属性の種類を制限可能。 列挙しなかった属性は削除される。

";TR[TD,TH]"のように"[...]"で子要素の種類を制限可能。 列挙しなかった子要素はエスケープされる。また、このようにして子要素の種類を 制限した場合は、要素がテキストを持つ事も禁止される。禁止されたテキストは 削除される。";TR[TD,TH,*]"のように要素名として"*"を指定すると、子要素としての テキストが禁止されない。

";TD{none}"のように"{...}"でsetTagBreakの指定を部分的に上書き可能。 このようにしてTagBreakが例外指定された要素については、setTagBreakでの設定が 適用されない。

上記"(...)", "[...]", "{...}"のオプションは任意の順序で同時に指定する事が可能。 但し同じ種類のオプションを一つのタグに対し複数個指定する事は出来ない。

デフォルト値は次の通り:

  ":HR:BR;S;STRONG;I;U;EM;A(HREF,TARGET,NAME)"
addAllowTag
  $checker->addAllowTag('!EMBED;TABLE[TR];TR[TD,TH];TD{none};TH{none}')

既存のタグの許可情報が消されない事を除き、setAllowTagと同様。 また、このメソッドでのみ意味のある指定方式として、 "!TAG"のように特定のタグを改めて禁止する事が出来る。

setATarget
  $checker->setATarget('_blank')

a要素のtarget属性を書換えるかどうか。undefを指定すると書換えが行われない。 setATargetを実行しない状態では'_blank'として設定されている。

補足

TagCheck は入力される文字列が HTML の文法的に正しい(well-formed である) 事を前提にしています。 出力は、文法的に正しく解釈しようとした結果で作られるため、 入力したタグの形と変わることがあります。

SEE ALSO

Tripletail
Tripletail::HtmlFilter

AUTHOR INFORMATION

    Copyright 2006 YMIRLINK Inc.

    This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself

    このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。

    Address bug reports and comments to: tl@tripletail.jp

    HP : http://tripletail.jp/