Asp.net中如何从数据库某字段中查找筛选出图片<img>标记,并让图片显示在网页上。打个比方说:比如现在我有一数据表,表中有一字段"content",类型 varchar,该字段是用来放新闻内容的(内容数据中包含图片代码),现在的问题就是在asp.net中如何在该字段的一大堆杂乱的数据中,把含的图片代码(即:含如<img src="***">的标记代码)给提取出来,并且在前台用控件绑定,实现这些图片的显示。
大致情况就是这样的,请高手指教哈。请附上代码说明(最好是使用正则)。谢谢了~~~~
建议楼上说的不错,你可以用正则解决,以前用的工具库有相关的需求,给你两个函数,你复制到VS里看看。
#region 匹配<img src="" />中的图片路径实际链接
/// <summary>
/// 匹配<img src="" />中的图片路径实际链接
/// </summary>
/// <param name="ImgString">字符串</param>
/// <param name="imgHttp"></param>
/// <returns></returns>
public static string GetImg(string ImgString, string imgHttp)
{
string MatchVale = "";
string Reg = @"src=.+\.(bmp|jpg|gif|png|)";
foreach (Match m in Regex.Matches(ImgString.ToLower(), Reg))
{
MatchVale += (m.Value).ToLower().Trim().Replace("src=",
"");
}
if (MatchVale.IndexOf(".net") != -1 ||
MatchVale.IndexOf(".com") != -1 || MatchVale.IndexOf(".org") != -1 ||
MatchVale.IndexOf(".cn") != -1 || MatchVale.IndexOf(".cc") != -1 ||
MatchVale.IndexOf(".info") != -1 || MatchVale.IndexOf(".biz") != -1 ||
MatchVale.IndexOf(".tv") != -1)
return (MatchVale);
else
return (imgHttp + MatchVale);
}
#endregion
#region 匹配页面的图片地址
/// <summary>
/// 匹配页面的图片地址
/// </summary>
/// <param name="HtmlCode">html源码</param>
/// <param name="imgHttp">要补充的http://路径信息</param>
/// <returns></returns>
public static string GetImgSrc(string HtmlCode, string imgHttp)
{
string MatchVale = "";
string Reg = @"<img.+?>";
foreach (Match m in Regex.Matches(HtmlCode.ToLower(), Reg))
{
MatchVale += GetImg((m.Value).ToLower().Trim(), imgHttp)
+ "|";
}
return MatchVale;
}
#endregion
很明显楼主的这种想法不成熟,我建议图片另外建一张表,里面存放图片的相关属性
如按照楼主的做法,我提出一下几点
1。用sql对字段content进行字符串处理,我想性能会大大的降低
2。如content中有多个<img src="***">这个标记的话,你该如何取
3。你现在是把该条记录的所有图片存放在这个字段中,我现在要取每条记录的倒数第二张图片,你又该如何取
一般如果文本字段里有图片的话,用在线编辑器就可以轻松搞定,在线编辑器有很多,你随便选一个,就是类似word一样的编辑器,在编辑器里你插入的时候它会生成<img>标签插入到表中,显示的时候也能正常显示,不要用你做额外的工作
用HTML编辑器插入,什么内容都可以插入的呀
前台不用任何处理,显示的绑定:<%#Eval("Content")%> 或者 span 的id: spanid.InnerHTML=row["Content"].ToString();