整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「C#實戰」一行代碼搞定!高效移除HTML標簽還原純凈文本

          HTML文本中移除所有HTML標記并提取純文本是我們經常需要使用的文本內容處理方式,比如搜索引擎、網站爬蟲或者本地文檔檢索系統需要提取網頁或HTML文檔的實際內容進行索引。通過去除HTML標簽,可以專注于實際的文字信息,提高搜索結果的相關性和準確性。在新聞聚合應用或社交媒體平臺上展示網頁鏈接的摘要時,通常會提取并顯示純文本內容以提供簡潔的預覽。對于視覺障礙人士使用的輔助技術如屏幕閱讀器,它們無法解析復雜的HTML結構,因此需要提取純文本以便朗讀給用戶。所以今天給大家分享一個使用正則表達式移除所有的Html標記的方法,供有需要的朋友們參考:

          第一個核心代碼是:正則表達式"<.*?>"

          // 示例用法:

          string inputHtml = "<html><body><h1>Hello, World!</h1>This is a <b>test</b>.</body></html>";

          string plainText = RemoveHtmlTags(inputHtml);

          Console.WriteLine(plainText); // 輸出: "Hello, World!This is a test."

          public static string RemoveHtmlTags(string html)

          {

          // 正則表達式用于匹配HTML標簽

          Regex regex = new Regex("<.*?>", RegexOptions.Singleline | RegexOptions.Compiled);

          // 使用正則表達式的Replace方法移除所有匹配的HTML標簽

          string result = regex.Replace(html, String.Empty);

          return result;

          }

          這個正則表達式<.*?>是非貪婪匹配任何以 < 開始、以 > 結束的字符串,它會盡可能少地匹配字符以找到每個HTML標簽。

          請注意,雖然此方法對于簡單場景可能有效,但對復雜的HTML文檔(特別是含有嵌套標簽、注釋、CDATA等內容)可能不夠健壯,因為它無法處理所有可能的HTML結構。

          第二個核心代碼是:正則表達式"<[^>]*>"

          public static string ExtractPlainTextFromHtml(string html)

          {

          // 使用正則表達式匹配所有的HTML標簽

          // 注意:這個簡單的正則表達式適用于大多數基礎HTML結構,但可能無法處理復雜嵌套或特殊格式的HTML

          Regex regex = new Regex("<[^>]*>", RegexOptions.Singleline | RegexOptions.Compiled);

          // 使用Replace方法去除所有匹配到的HTML標簽,并返回純文本內容

          string plainText = regex.Replace(html, String.Empty);

          return plainText.Trim(); // 為了得到更整潔的結果,可以對結果進行trim操作以去除多余的空白字符

          }

          在這段代碼中,我們定義了一個名為ExtractPlainTextFromHtml的方法,該方法利用正則表達式 <[^>]*> 來查找并替換所有HTML標簽。這里的正則表達式表示任何以 < 開始、以 > 結束的非空字符串(即HTML標簽),Singleline 選項使.能匹配換行符,以便跨多行搜索標簽,而 Compiled 選項則是為了優化正則表達式的性能。

          第二個核心代碼是:正則表達式"<[^>]*>"

          public static string RemoveHtmlTags(string html)

          {

          // 正則表達式,匹配所有HTML標簽

          string pattern = "<[^>]+>";

          // 使用Regex.Replace方法移除所有匹配的HTML標簽

          return Regex.Replace(html, pattern, String.Empty);

          }

          請注意,此方法僅移除HTML標記,不會解析或處理嵌入在HTML中的JavaScript代碼或其他非標記內容。此外,此方法也無法處理不規范或不符合預期格式的HTML標記。如果需要更復雜的HTML解析或清理,您可能需要使用專門的HTML解析庫,如AngleSharp或HtmlAgilityPack等。

          盡管上述方法對于許多簡單場景已經足夠有效,但在面對復雜的HTML文檔時,由于HTML本身的嵌套和特殊結構,簡單的正則表達式可能無法完美地解析并移除所有標簽。在這種情況下,推薦使用專門為處理HTML設計的庫,如HtmlAgilityPack,它可以準確地解析HTML并提供豐富的API用于提取純文本內容。

          TML 規范的開發是一個漸進的過程,有時會出現問題。隨著時間的推移,許多元素和屬性被添加到 HTML 中,直到后來 Web 社區集體意識到有更好的方法時才被刪除。由于已棄用和過時的元素和屬性已經存在于網絡上,因此許多現代瀏覽器繼續支持它們的使用。盡管它們可能仍然有效,但您應該始終遵循最新版本的要求 HTML。不能保證瀏覽器對過時和棄用元素的支持會持續下去。有效但執行不A力。

          有幾種 HTML 元素和屬性是有效的并且應該被使用,但是這些特性的實現隨著時間的推移而發生了變化,而 Web 開發社區的一些人還沒有注意到。HTMLtables就是一個很好的例子。table在某一時刻,使用 HTML元素創建網頁布局是很常見的。幾乎沒有人再這樣做了,CSS 比tables以往任何時候都更強大。但是,即使是經驗豐富的 Web 開發人員,也存在許多其他不太嚴重的誤用和語法錯誤。以下是一些經常被誤用得完全有效且有用的 HTML 功能以及正確實現的示例。

          DOCTYPE

          雖然在技術上不是 HTML 元素,但DOCTYPE聲明應該是每個 HTML 文檔中出現的第一件事。這個聲明是瀏覽器文檔中代碼的語言。過去,這個聲明包括幾個部分,可能會有點復雜。然而,在 HTML5 中,這很簡單:

          使用該聲明開始每個人 HTML 文檔,Web 瀏覽器將準確地知道您要說什么。

          識別字符集



          Web 瀏覽器必須知道用于編寫文檔的字符集才能正確呈現它。在絕大多數情況下,要聲明的正確字符集是UTF-8。如果您需要聲明其他任何內容,很可能您已經知道并知道如何去做。如果您不確定,請堅持使用 UTF-8 是一個安全的選擇。在 HTML5 中聲明字符集比在以前的 HTML 版本中要簡單得多。這是現代 HTML5 中聲明的正確語法:

          只需將該行放到head您的 HTML 文檔中即可。

          鏈接到版權信息



          過去,通常使用meta標簽來提供版權信息。但是,這不是處理此任務的正確方法,并且網絡爬蟲無法識別標簽的這種標簽外使用meta。識別版權的正確方法是使用HTML 文檔link中的元素,如下所示:head

          您還可以在錨點和區域元素上使用rel="license"屬性值對。

          停止注釋掉腳本



          在過去,通常使用如下語法將腳本添加到 HTML 文檔中:

          這是有充分理由的。在某一時刻,許多瀏覽器無法識別script標簽,并試圖將標簽之間的內容呈現為 HTML,從而導致它們以純文本形式顯示腳本。為了避免這個問題,開發人員會注釋掉文本,這樣它就不會被不受支持的瀏覽器呈現為 HTML。那些日子已經離我們很遠了。所有現代瀏覽器都支持該script標簽。只需完全刪除 HTML 注釋括號,或者更好的是,將 JavaScript 編寫在單獨的文件中,然后使用script標記將其導入到當前的 HTML 文檔中,如下所示:



          立即停止使用的 HTML 元素

          還有不少元素曾經是 HTML 規范的一部分,但后來被棄用或廢棄。以下是您可能仍在使用的八個 HTML 元素,您應該立即停止使用它們以及您可以使用的替代標簽:

          1. applet:如果您仍在使用此標簽,那么您遇到的問題比使用不推薦使用的標簽更大,因為Java 正在作為一種 Web 編程語言退出。短期內切換到objectorembed元素,但長期停止在 web 上使用 Java。
          2. bgsound: 這個元素曾經被 IE 用來為網站添加背景音樂。背景音樂從一開始就是個壞主意。只是不要這樣做。如果您想將音頻內容添加到您的網站,請使用audio標簽,但不要將其設置為自動播放。
          3. frame:該frame元素及其所有相關元素已從 HTML 規范中刪除。不要使用它們。如果iframe您嘗試嵌入外部網頁,請使用CSS,如果您嘗試設計網站布局,請使用。
          4. hgroup:在過去,您可以通過將標題和副標題包裝在適當的標題級別并將兩個標題包裝在hgroup標簽中來對標題和副標題進行分組。但是,此元素已被棄用。相反,使用單個標題元素來包含標題和副標題,將副標題包裝在span標簽中,并使用 CSS 來控制副標題的樣式。
          5. dir:目錄元素曾經是什么 HTML 規范的一部分,用于表示文件或頁面的列表。改用錨元素的無序列表。
          6. acronym:此元素已被棄用,請改用縮寫標簽abbr
          7. isindex:此元素在網頁上創建了一個文本字段。但是,從 HTML 4.01 開始,可以使用呈現此標記的form元素input和屬性來完成同樣的事情,type="text"這些標記是不必要的和過時的。
          8. plaintext, xmp, 和listing: 這些標簽是以純文本而不是 HTML 顯示文本的不同方式。如果您想在 HTML 文檔中嵌入純文本,您有兩個選項,pre以及'code'。要以等寬字體顯示文本并保留空格 use pre,要顯示代碼,請使用該code元素并<通過>鍵入<>替換每個符號來轉義所有符號。

          由 CSS 更好地處理的任務

          有許多元素和屬性曾經是 HTML 的一部分,但執行的任務更適合 CSS。這些元素已經被棄用,取而代之的是讓 CSS 控制網頁呈現。

          由 CSS 屬性替換的元素

          曾經使用 HTML 元素(如fontbasefontcenterstrikeu. 這些元素都已被棄用,取而代之的是 CSS 提供的字體和排版控件。要了解更多信息,請查看我們的字體和網頁排版教程。一個從未真正流行起來的獨特標簽是multicol。此標簽可用于將文本分成多列,類似于報紙的外觀。現在可以使用 CSScolumns屬性在現代瀏覽器中創建類似但更強大的效果。

          由 CSS 屬性替換的屬性

          廣泛的 HTML 元素屬性曾經可用于控制 HTML 元素的呈現。幾乎所有這些標簽都已被棄用,現在 CSS 提供了相同的功能。如果您不熟悉 CSS 以及如何實現這些屬性,我們的 CSS 教程將幫助您立即開始使用層疊樣式表。下面是一些更常用的屬性和現在可以用來實現相同結果的 CSS 屬性。

          1. align:此屬性已被強大的 CSS 屬性組合所取代,包括text-alignfloatvertical-align.
          2. backgroundbgcolor:不要使用這些已棄用的 HTML 屬性應用背景圖像和顏色,而是使用background-imagebackground-colorCSS 屬性。
          3. heightwidth:這些屬性的使用在某些元素上仍然有效。但是,在所有情況下,都可以通過使用同名的 CSS 屬性來實現相同的效果。
          4. clear:如果要強制一個元素清除一側或兩側的所有其他元素,請使用clearCSS 屬性而不是clearHTML 屬性。
          5. border:雖然此屬性在許多元素上仍然可以正常工作,但使用borderCSS 屬性應用邊框是更好的做法。

          其他資源

          在本文中,我們介紹了一些最常見的元素和屬性,這些元素和屬性使用不當或已被棄用或過時。然而,我們真的只是觸及了冰山一角。如果您想了解已從 HTML 規范中刪除的所有 HTML 元素和屬性,請參閱以下資源:


          主站蜘蛛池模板: 午夜福利国产一区二区| 国产成人综合精品一区| 无码人妻一区二区三区在线| 亚洲一区在线免费观看| 本免费AV无码专区一区| 精品视频一区二区三三区四区| 伊人久久一区二区三区无码| 国产亚洲一区二区三区在线观看| 国产一区二区三区免费视频 | 久久久久人妻一区精品| 中文字幕乱码人妻一区二区三区 | 无码人妻AⅤ一区二区三区| 国产激情一区二区三区在线观看 | 蜜臀AV免费一区二区三区| 久久国产三级无码一区二区| 精品视频在线观看一区二区三区| 极品人妻少妇一区二区三区| 色婷婷综合久久久久中文一区二区| 一区二区三区在线观看视频| 日韩有码一区二区| 免费一区二区视频| 杨幂AV污网站在线一区二区| 国产综合视频在线观看一区| 国产午夜精品一区二区三区极品| 无码免费一区二区三区免费播放| 久久精品视频一区二区三区| 国产午夜精品免费一区二区三区| 国产午夜精品一区二区三区小说 | 国产一区二区三区免费观在线| 一级毛片完整版免费播放一区| 一区二区三区午夜| 香蕉视频一区二区| 99精品一区二区三区| 亚洲AV无码一区二区三区久久精品 | 亚洲一区二区三区在线播放| 国产精品 视频一区 二区三区| 国产在线精品一区二区高清不卡| 手机看片福利一区二区三区| 中文字幕日韩人妻不卡一区| 久久久久人妻一区精品性色av| 成人毛片无码一区二区|