मैंने यहां सुझाए गए रेगेक्स आधारित समाधानों पर ध्यान दिया है, और वे मुझे सबसे अधिक तुच्छ मामलों को छोड़कर किसी भी आत्मविश्वास से नहीं भरते हैं। एक विशेषता में कोण कोष्ठक यह सब तोड़ने के लिए ले जाएगा, अकेले जंगली से HTML के रूप में दुर्भावनापूर्ण HTML दें। और संस्थाओं के बारे में क्या पसंद है& ? यदि आप HTML को सादे पाठ में बदलना चाहते हैं, तो आपको संस्थाओं को भी डीकोड करना होगा।
तो मैं नीचे विधि का प्रस्ताव करता हूं।
HtmlAgilityPack का उपयोग करते हुए , यह विस्तार विधि कुशलतापूर्वक एक HTML टुकड़े से सभी HTML टैग्स को स्ट्रिप्स करती है। HTML संस्थाओं को भी डीकोड करता है &। प्रत्येक पाठ आइटम के बीच एक नई लाइन के साथ सिर्फ आंतरिक पाठ आइटम देता है।
public static string RemoveHtmlTags(this string html)
{
if (String.IsNullOrEmpty(html))
return html;
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
if (doc.DocumentNode == null || doc.DocumentNode.ChildNodes == null)
{
return WebUtility.HtmlDecode(html);
}
var sb = new StringBuilder();
var i = 0;
foreach (var node in doc.DocumentNode.ChildNodes)
{
var text = node.InnerText.SafeTrim();
if (!String.IsNullOrEmpty(text))
{
sb.Append(text);
if (i < doc.DocumentNode.ChildNodes.Count - 1)
{
sb.Append(Environment.NewLine);
}
}
i++;
}
var result = sb.ToString();
return WebUtility.HtmlDecode(result);
}
public static string SafeTrim(this string str)
{
if (str == null)
return null;
return str.Trim();
}
क्या तुम सच में गंभीर हैं, तो आप भी कुछ HTML टैग की सामग्री को अनदेखा करने के लिए (चाहते हैं <script>, <style>, <svg>, <head>,<object> मन के लिए आते हैं!) क्योंकि वे शायद समझ में हम के बाद कर रहे हैं में पठनीय सामग्री शामिल नहीं है। आप वहां क्या करते हैं, यह आपकी परिस्थितियों पर निर्भर करेगा और आप कितनी दूर जाना चाहते हैं, लेकिन HtmlAgilityPack का उपयोग करके यह श्वेतसूची या चयनित टैग को ब्लैकलिस्ट करने के लिए बहुत तुच्छ होगा।
यदि आप किसी HTML पृष्ठ पर सामग्री वापस दे रहे हैं, तो सुनिश्चित करें कि आप XSS भेद्यता को समझते हैं और इसे कैसे रोकें - यानी हमेशा किसी भी उपयोगकर्ता-दर्ज किए गए पाठ को एन्कोड करें जो HTML पृष्ठ पर वापस >हो जाता है ( >आदि)।