關於正則表達式獲取FCKEditor控件上傳圖片地址

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章