最近用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,再用第二種匹配取值。最終返回集合。