1

何年も前に書かれた約 100 以上の HTML ファイルがあり、それらのファイルにはすべてインライン CSS が含まれています。現在、これらのファイルから CSS を抽出し、CSS (スタイルシート) 用の別のファイルを作成しようとしています。したがって、このプロセスでは、最初にすべての HTML ファイルを消去します (それらから CSS を削除します)。

この仕事を行うことができるperlモジュールはありますか? CPAN で検索しましたが、見つかりませんでした。検索クエリが目的のモジュールと一致しなかった可能性があります。そのようなモジュールがあれば教えてください。そうでない場合は、そのためのモジュールを作成します。

4

2 に答える 2

5

これは、適切な HTML パーサーを使用すると非常に簡単です (私は のファンですがHTML::TokeParser、他にもあります)。HTML ドキュメント内のすべてのトークンを反復処理します。属性を持つ HTML タグを見つけた場合style(インライン CSS を定義する他の属性はありますか? 私は専門家ではありません)、タグを出力する前にその属性を削除します。変更せずに他のトークンを出力します。

于 2012-09-19T04:23:55.237 に答える
3

これを行う非常に簡単な方法は、HTML::Restrictを使用することです。保持したいタグと属性を指定するだけで、それ以外はすべて削除されます。ドキュメントから:

use HTML::Restrict;

my $hr = HTML::Restrict->new();
$hr->set_rules({
    b   => [],
    img => [qw( src alt / )]
});

my $html = q[<body><b>hello</b> <img src="pic.jpg" alt="me" id="test" /></body>];
my $processed = $hr->process( $html );

# $processed now equals: <b>hello</b> <img src="pic.jpg" alt="me" />
于 2012-09-20T03:25:35.763 に答える