为了提高用户排版效果,图文混排应用广泛,如:新闻、社区、博客等等,在删除文章时如果不把里面的图片或附件一并删除,那久而久之将给服务器带来严重的、没必要的空间浪费。
代码的原理是将新闻内容通过正则表达式去匹配,然后再根据图片路径进行删除。下面将从代码上来了解如何在删除内容时删除图片。
代码采用正则表达式来判断,所以首先要添加引用:
using System.Text.RegularExpressions;
通过正则表达式匹配合规则的路径:
/// <summary>
/// 获得图片路径
/// </summary>
/// <param name="str">内容</param>
/// <returns>string 结果</returns>
private string getPicUrl(string str)
{
string content = "", regstr = "", url = "";
content = str + "";
regstr = "src[^>]*[^/].(?:jpg|bmp|gif)(?:\"|\') ";
content = Regex_Execute(regstr, content);
content = content.Replace("'", "");
content = content.Replace("\"", "");
url = content.Replace("src=", "");
return url;
}
/// <summary>
/// 正则表达式匹配
/// </summary>
/// <param name="patrn">正则表达式</param>
/// <param name="str">内容</param>
/// <returns>string 结果</returns>
private string Regex_Execute(string patrn, string str)
{
string values = "";
Regex rx = new Regex(patrn);
MatchCollection mc = rx.Matches(str);
foreach (Match match in mc)
{
values = values + match.Value + "|";
}
return values;
}
测试内容:
string
strContent = "图片1:<img src=\"aa.gif\" /><br />图片2:<img
src=\"bb.gif\" /><br />图片3:<img src=\"../pic/cc.gif\"
/><br />图片4:<img src='/dd.gif' /><br />图片5:<img
src=/ee.gif />";
string strPaths = getPicUrl(strContent);
最后的结果为(strPaths的值):aa.gif |bb.gif |../pic/cc.gif |/dd.gif |
这就是你文章中在src下面的值,在表达式那里你还可以添加具体的,比如哪个文件夹是系统文件夹,不进行删除(图片表情),具体的方式在这里就不列了。
取到了路径,接下来就是删除了!
System.IO.File.Delete(path);
大功告成,应该写得比较详细了吧?自己去组合吧!