0
0
نحوه حذف تگ های html از یک رشته در Asp.Net
نحوه حذف تگ های html از یک رشته در Asp.Net
در این پست نحوه حذف تگ های html از یک رشته در Asp.Net را قرار داده ایم.
شاید در بعضی مواقع نیاز داشته باشید تا تگ های html را از یک رشته حذف کنید و متن خالص آن را داشته باشید.
برای این کار کافیست یک کلاس بنام RemoveHtml ایجاد کنید و سپس کد زیر را به آن کلاس اضافه کنید.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Web; namespace Infrastructure { public class RemoveHtml { private static readonly Regex _tags_ = new Regex(@"<[^>]+?>", RegexOptions.Multiline | RegexOptions.Compiled); //add characters that are should not be removed to this regex private static readonly Regex _notOkCharacter_ = new Regex(@"[^\w;&#@.:/\\?=|%!() -]", RegexOptions.Compiled); public static String UnHtml(String html) { html = HttpUtility.UrlDecode(html); html = HttpUtility.HtmlDecode(html); html = RemoveTag(html, "<!--", "-->"); html = RemoveTag(html, "<script", "</script>"); html = RemoveTag(html, "<style", "</style>"); //replace matches of these regexes with space html = _tags_.Replace(html, " "); html = _notOkCharacter_.Replace(html, " "); html = SingleSpacedTrim(html); return html; } private static String RemoveTag(String html, String startTag, String endTag) { Boolean bAgain; do { bAgain = false; Int32 startTagPos = html.IndexOf(startTag, 0, StringComparison.CurrentCultureIgnoreCase); if (startTagPos < 0) continue; Int32 endTagPos = html.IndexOf(endTag, startTagPos + 1, StringComparison.CurrentCultureIgnoreCase); if (endTagPos <= startTagPos) continue; html = html.Remove(startTagPos, endTagPos - startTagPos + endTag.Length); bAgain = true; } while (bAgain); return html; } private static String SingleSpacedTrim(String inString) { StringBuilder sb = new StringBuilder(); Boolean inBlanks = false; foreach (Char c in inString) { switch (c) { case '\r': case '\n': case '\t': case ' ': if (!inBlanks) { inBlanks = true; sb.Append(' '); } continue; default: inBlanks = false; sb.Append(c); break; } } return sb.ToString().Trim(); } } }
اگر به کد بالا توجه کنید چندین متد دارد و یک متد Public و که به صورت Static به نام UnHtml تعریف شده.
حالا در هر جای برنامه کافیست به صورت زیر عمل کنید.
string strText = RemoveHtml.UnHtml(tags);
در کد بالا به دلیل اینکه متد از نوع Static تعریف شده نیاز به ایجاد شی از کلاس نیست. و داخل پرانتز می توانید یک متغیر یا یک رشته که حاوی تگ های html است بنویسید. و این متد یک متن که تگ های html آن حذف شده را بر میگرداند و در متغیر strText قرار می دهد.
نظر / سوال