您的位置:首页 > 其它

关于正则表达式获取FCKEditor控件上传图片地址

2011-03-20 01:57 471 查看
最近用asp.net做了一个网站,做的是一个小宾馆的门户网站,客户要求后台添加客房描述的时候可以上传图片,并从图片中取出一张图片,作为客房列表显示之用。我用的是FCKEditor控件。

以下为代码部分,

1、传入客房描述,将客房描述中所有图片的src取出,放入集合中,并返回集合

private static List<string> GetInputImgUrls(string HTMLStr)
{
List<string> pics = new List<string>();

string str = string.Empty;
Regex r1 = new Regex(@"<input/s+[^>]*/s*src/s*=/s*([']?)(?<url>/S+)(/S[']?)[^>]*>", RegexOptions.IgnoreCase);
MatchCollection urls1 = r1.Matches(HTMLStr);
foreach (Match match1 in urls1)
{
if (match1.Success)
{
str = match1.Result("${url}");
pics.Add(str.Substring(1));
}
}
if (pics.Count == 0)
{
Regex r2 = new Regex(@"<img/s+[^>]*/s*src/s*=/s*([']?)(?<url>/S+)(/S[']?)[^>]*>", RegexOptions.IgnoreCase);
MatchCollection urls2 = r2.Matches(HTMLStr);
foreach (Match match2 in urls2)
{
if (match2.Success)
{
str = match2.Result("${url}");
pics.Add(str.Substring(1));
}
}
}
return pics;
}

2、从集合中取出第一张作为显示

public static string getFirstImageUrl(string url)
{

List<string> list = GetInputImgUrls(url);
if (list.Count > 0)
{
return list[0];
}
return "";
}

其中,由于FCKEditor控件上传图片有两种格式,一是<input type="img" src=“..." />,二是<img src="..." />

于是添加了两种方式的取值,用第一种取值,添加到集合中,如果集合中为0,再用第二种匹配取值。最终返回集合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: