C# 写的通用得到富文本框中的图片路径
富文本框(即 ueditor)是个好东西,功能很强大!开发者若需要去了解学习的话,可以访问:http://ueditor.baidu.com/website/ 进行学习。
但是有得后端开发者需要取出其中某一类的标签,比如需要取出里面的所有图片等....
好,废话不多说,直接上代码:
例子:
/// <summary> /// 通用得到富文本框中的图片 /// </summary> /// <returns></returns> private List<string> GetContentImg(string content) { //存储图片的集合 List<string> imgList = new List<string>(); //定义匹配变量 int j = 0; //定义截取开始下标 int startIndex = 0; //定义截取长度变量 int len = 0; //从content中取出图片 for (int i = 0; i < content.Length; i++) { char ch = content[i]; if (len > 0) { len++; } //判断是否满足条件 if ((j==0 && ch == 'i') || (j == 1 && ch == 'm') || (j == 2 && ch == 'g') || (j == 3 && ch == ' ') || (j == 5 && ch == 'r') ||(j == 6 && ch == 'c') ||(j == 7 && ch == '"')||(j == 4 && ch=='s')||(j == 8 && ch == '"')) { if (j==4) { startIndex = i; len++; } if (j == 8) { //开始截取 string str = content.Substring(startIndex, len); imgList.Add(str); //清空 startIndex = 0; j = 0; len = 0; } j++; continue; } } var list = new List<string>(); if (imgList.Count>0) { //得到服务器地址 var cmsDomain = _configuration.GetSection("System:CMSDomainName").Value; foreach (var item in imgList) { string url = item; //拆分 var newUrl = url.Split('\"'); if (newUrl.Length>1) { url = newUrl[1].Replace("@/", "/"); } //拼接 url = cmsDomain + url; //验证图片是否可以在网络上访问 bool flag = FileClassify.JudgeFileExist(url); if (flag) { list.Add(url); } } } return list; }
其中:fileClassify是一个静态的类
public static bool JudgeFileExist(string url) { try { //创建根据网络地址的请求对象 var httpWebRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); httpWebRequest.Method = "HEAD"; httpWebRequest.Timeout = 1000; //返回响应状态是否是成功比较的布尔值 var data= (HttpWebResponse)httpWebRequest.GetResponse(); return data.StatusCode == HttpStatusCode.OK; } catch { return false; } }
呵呵,才写好的。可能封装性不是很好,也有可能会有漏洞,大家可以用 try catch 来捕获异常,因为我也是初级程序员,后期还会继续优化的!