2017-01-01 18 views
-2

私はHTML形式のタグを削除しようとしているので、ページが、私はそれが削除HTMLページのスタイルタグ

これを動作するように取得するように見えるカント何のスタイリングを持っていないとの内容のすべては、私が

持っているものです
$PageContent = qq~<style type="text/css"> 
/* PAGE STYLE */ 
body { 
     margin:24px; 
     padding:0px; 
     background:#323232; 
     color:#EEEEEE; 
     min-width:748px; 
     font-family:'Verdana', sans-serif; 
     font-size:9pt; 
     font-weight:500; 
     line-height:12pt; 
     text-decoration: none; 
}</style>~; 

$PageContent =~ s/<style.*?<\/style>//isg; 

print $PageContent; 
+1

コードに1つの問題は、スタイルがネストされることがあることです。 ' ... 'の形式のタグはこれを失敗させます。 – G5W

+0

私はあなたのコードを実行すると、それは完全に動作します。 ''の間のすべてを削除します。結果は空の文字列です。あなたのコードの_ "[短い、自己完結型、正しい(コンパイル可能)、例](http://sscce.org/)" _を表示してください。あなたの試行が失敗した例を表示してください。 – PerlDuck

+3

***正規表現を使ってHTMLを編集しようとしないでください***。 – Borodin

答えて

1

Mojo::DOMのようなHTML DOMパーサーを使用できます。

use Mojo::DOM; 
use strict; 
use warnings; 

my $dom = Mojo::DOM->new; 
my $html = "<div><div><div>Test</div></div></div>"; 

while($html =~ m/<div>/) { 
    $html = $dom->parse($html)->at('div')->strip; 
} 

print $html; 

Output: Test 

また、<div>タグに一致するDOM関数の1つを使用します。私の例では$html =~ m/div/の行は単純なデモンストレーション目的のためのものです。

関連する問題