整合營銷服務商

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

          免費咨詢熱線:

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

          「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用于提取純文本內容。

          HP默認的函數有移除指定html標簽,名稱為strip_tags,在某些場合非常有用。

          strip_tags

          (PHP 3 >=3.0.8, PHP 4, PHP 5)

          strip_tags — Strip HTML and PHP tags from a string

          string strip_tags ( string str [, string allowable_tags] )

          弊端 :

          這個函數只能保留想要的html標簽,就是參數string allowable_tags。

          這個函數的參數allowable_tags的其他的用法。

          strip_tags($source, ”); 去掉所以的html標簽。

          strip_tags($source, ‘<div><img><em>’); 保留字符串中的div、img、em標簽。

          如果想去掉的html的指定標簽。那么這個函數就不能滿足需求了。于是乎我用到了這個函數。

          /**

          * Removes specific tags.

          */

          function strip_only_tags($str, $tags, $stripContent=FALSE) {

          $content='';

          if (!is_array($tags)) {

          $tags=(strpos($str, '>') !==false ? explode('>', str_replace('<', '', $tags)) : array($tags));

          if (end($tags)=='') {

          array_pop($tags);

          }

          }

          foreach($tags as $tag) {

          if ($stripContent) {

          $content='(.+<!--'.$tag.'(-->|\s[^>]*>)|)';

          }

          $str=preg_replace('#<!--?'.$tag.'(-->|\s[^>]*>)'.$content.'#is', '', $str);

          }

          return $str;

          }

          參數說明

          $str — 是指需要過濾的一段字符串,比如div、p、em、img等html標簽。

          $tags — 是指想要移除指定的html標簽,比如a、img、p等。

          $stripContent=FALSE — 移除標簽內的內容,比如將整個鏈接刪除等,默認為False,即不刪除標簽內的內容。

          使用說明

          $target=strip_only_tags($source, array(‘a’,'em’,'b’));

          移除$source字符串內的a、em、b標簽。

          $source='<div><a href="http://www.tsingyaun.cn" target="_blank"><img src="http://www.tsingyuan.cn/logo.png" border="0" alt="Welcome to linzl." />This a example from<em>lixiphp</em></a><strong>!</strong></div>

          ';

          $target=strip_only_tags($source, array('a','em'));

          //target results

          //<div><img src="http://blog.lixiphp.com/logo.png" border="0" alt="Welcome to lixiphp." />This a example from<strong>!</strong></div>

          :left;"

          hp修改html標簽中的內容php與html如何配合使用php改變htmlphp過濾htmlphp輸出html標簽

          PHP刪除HTMl標簽的三種解決方法_流年-CSDN博客_php去除htm...

          2017年9月19日 在PHP中可以使用strip_tags函數去除HTML標簽,看下面示例: 復制代碼代碼如下: <?php $str=‘www<p>dreamdu</p>.com'; echo(htmlspecialchars($str).”<br>”);...

          CSDN技術社區

          百度快照

          php去除HTML標簽實例_php實例_腳本之家

          2013年11月6日 在php中要去除字符串中的HTML標簽方法有很多種,最常用的就是使用strip_tags函數一并去了,只保留字符了,還在就是有選擇性的去除了這里要用正則表達式了,下面寫二...


          主站蜘蛛池模板: 国产精品亚洲综合一区在线观看 | 中文日韩字幕一区在线观看| 日本精品一区二区在线播放| 中文字幕亚洲一区| 亚洲无码一区二区三区| 中文字幕一区二区三区乱码| 日本v片免费一区二区三区 | 国产一区二区三区久久精品| av无码一区二区三区| 日韩精品区一区二区三VR| 精品亚洲av无码一区二区柚蜜| 国产伦精品一区二区三区精品| 国产精品高清一区二区三区 | 日韩一区二区超清视频| 亚洲精品国产suv一区88| 国产福利酱国产一区二区| 在线观看一区二区精品视频| 精品国产亚洲第一区二区三区| 国产主播一区二区三区| 国产午夜毛片一区二区三区| 久久亚洲综合色一区二区三区| 亚洲一区二区三区免费观看| 亚洲国产欧美国产综合一区 | 暖暖免费高清日本一区二区三区 | 蜜桃无码AV一区二区| 国产一区二区三区国产精品| 91午夜精品亚洲一区二区三区| 日韩人妻精品无码一区二区三区| 人妻无码一区二区视频| 中文字幕AV一区二区三区| 在线播放一区二区| 少妇无码AV无码一区| 国产91精品一区二区麻豆亚洲| 在线欧美精品一区二区三区 | 日本精品一区二区三区视频| 亚洲毛片αv无线播放一区| 老湿机一区午夜精品免费福利| 99久久综合狠狠综合久久一区| 亚洲视频在线一区二区| 日韩精品无码人妻一区二区三区| 国产麻豆精品一区二区三区|