工具类包含:去除富文本中的HTML标签、将富文本中的HTML标签里的Base64以序列化形式返回、取得HTML中所有图片的 URL。
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace myutil.Common.Helper
{
public static class HtmlHelper
{
#region 去除富文本中的HTML标签
/// <summary>
/// 去除富文本中的HTML标签
/// </summary>
/// <param name="html"></param>
/// <param name="length"></param>
/// <returns></returns>
public static string ReplaceHtmlTag(string html, int length = 0)
{
string strText = System.Text.RegularExpressions.Regex.Replace(html, "<[^>]+>", "");
strText = System.Text.RegularExpressions.Regex.Replace(strText, "&[^;]+;", "");
if (length > 0 && strText.Length > length)
return strText.Substring(0, length);
return strText;
}
#endregion
#region 将富文本中的HTML标签里的Base64以序列化形式返回
/// <summary>
/// 将富文本中的HTML标签里的Base64以序列化形式返回
/// </summary>
/// <param name="html">序列化字符串</param>
/// <returns></returns>
public static string GetHtmlBase64ToImgStrList(string html)
{
var preStr = "<img src=\\\"";
var lastStr = "\\\"/>";
var imgStrList = new List<string>();
//切割获取base64字符串
while (html.IndexOf(preStr) > -1)
{
var startPos = html.IndexOf(preStr);
var endPos = html.Substring(startPos).IndexOf(lastStr) + startPos;
if (endPos > -1)
{
var imgStr = html.Substring(startPos + preStr.Length, endPos - startPos - preStr.Length);
html = html.Substring(endPos);
if (!imgStr.StartsWith("data:image"))
{
continue;
}
imgStrList.Add(imgStr);
}
}
return JsonConvert.SerializeObject(imgStrList);
}
#endregion
/// <summary>
/// 取得HTML中所有图片的 URL。
/// </summary>
/// <param name="sHtmlText">HTML代码</param>
/// <returns>图片的URL列表</returns>
public static string[] GetHtmlImageUrlList(string sHtmlText)
{
// 定义正则表达式用来匹配 img 标签
Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);
// 搜索匹配的字符串
MatchCollection matches = regImg.Matches(sHtmlText);
int i = 0;
string[] sUrlList = new string[matches.Count];
// 取得匹配项列表
foreach (Match match in matches)
sUrlList[i++] = match.Groups["imgUrl"].Value;
return sUrlList;
}
}
}