2017-01-01 102 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

你的代碼有一個問題,有時樣式是嵌套的。表格標籤' ... '會使這個失敗。 – G5W

+0

當我運行你的代碼時,它完美的工作。它刪除(包括)''之間的所有內容。結果是一個空字符串。請在代碼中顯示_「[簡短,獨立,正確(可編譯),示例](http://sscce.org/)」。顯示你的嘗試失敗的例子。 – PerlDuck

+3

***請不要嘗試使用正則表達式***編輯HTML。 – Borodin

回答

1

您可以使用HTML DOM解析器,如Mojo::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 

還可以使用其中一個DOM函數來匹配<div>標籤。在我的示例中,$html =~ m/div/的行僅用於簡單的演示目的。