java去除html程式碼中含有的html、js、css標籤,獲取文字內容
阿新 • • 發佈:2019-01-30
現在在做政府網站,網站裡有很多公開資訊和政務諮詢的新聞,現在需要做新聞的RSS訂閱功能,其中有一項是需要處理文章頁的內容。我們後臺新增編輯文章使用的是編輯器,文章內容會帶有很多html標籤和css樣式。RSS訂閱展示新聞列表,只需要展示一部分文章內容,這就需要處理文章頁的html程式碼,去除標籤,抓取文章文字內容,下面講一下怎麼做,主要是java的正則表示式和replaceAll()方法。
main方法執行結果:/** * 去除文章內容頁頁面程式碼裡的HTML標籤 * Created by yanyl on 2018/6/4. */ public class DelTagsUtil { /** * 去除html程式碼中含有的標籤 * @param htmlStr * @return */ public static String delHtmlTags(String htmlStr) { //定義script的正則表示式,去除js可以防止注入 String scriptRegex="<script[^>]*?>[\\s\\S]*?<\\/script>"; //定義style的正則表示式,去除style樣式,防止css程式碼過多時只擷取到css樣式程式碼 String styleRegex="<style[^>]*?>[\\s\\S]*?<\\/style>"; //定義HTML標籤的正則表示式,去除標籤,只提取文字內容 String htmlRegex="<[^>]+>"; //定義空格,回車,換行符,製表符 String spaceRegex = "\\s*|\t|\r|\n"; // 過濾script標籤 htmlStr = htmlStr.replaceAll(scriptRegex, ""); // 過濾style標籤 htmlStr = htmlStr.replaceAll(styleRegex, ""); // 過濾html標籤 htmlStr = htmlStr.replaceAll(htmlRegex, ""); // 過濾空格等 htmlStr = htmlStr.replaceAll(spaceRegex, ""); return htmlStr.trim(); // 返回文字字串 } /** * 獲取HTML程式碼裡的內容 * @param htmlStr * @return */ public static String getTextFromHtml(String htmlStr){ //去除html標籤 htmlStr = delHtmlTags(htmlStr); //去除空格" " htmlStr = htmlStr.replaceAll(" ",""); return htmlStr; } public static void main(String[] args){ String htmlStr= "<script type>var i=1; alert(i)</script><style> .font1{font-size:12px}</style><span>少年中國說。</span>紅日初升,其道大光。<h3>河出伏流,一瀉汪洋。</h3>潛龍騰淵, 鱗爪飛揚。乳 虎嘯 谷,百獸震惶。鷹隼試翼,風塵吸張。奇花初胎,矞矞皇皇。干將發硎,有作其芒。天戴其蒼,地履其黃。縱有千古,橫有" + "八荒。<a href=\"www.baidu.com\">前途似海,來日方長</a>。<h1>美哉我少年中國,與天不老!</h1><p>壯哉我中國少年,與國無疆!</p>"; System.out.println(getTextFromHtml(htmlStr)); } }
少年中國說。紅日初升,其道大光。河出伏流,一瀉汪洋。潛龍騰淵,鱗爪飛揚。乳虎嘯谷,百獸震惶。鷹隼試翼,風塵吸張。奇花初胎,矞矞皇皇。干將發硎,有作其芒。天戴其蒼,地履其黃。縱有千古,橫有八荒。前途似海,來日方長。美哉我少年中國,與天不老!壯哉我中國少年,與國無疆!