现在用FCK上传的图片是跟文章的内容混在一起的,希望取出其中某张图片的路径存入数据库中的某个字段(要相对路径)
现在FCK获得的路径是这样的
/images/image/F200606110610522718192802.jpg images是网站根目录底下的一个文件夹,现在就求一表达式来从FCKeditor1.Value中把这个取出来。
环境是vs 2005(vb)
现在FCK获得的路径是这样的
/images/image/F200606110610522718192802.jpg images是网站根目录底下的一个文件夹,现在就求一表达式来从FCKeditor1.Value中把这个取出来。
环境是vs 2005(vb)
解决方案 »
- C# 两个下拉列表联动的问题
- 将.net 4.0 转化为3.5后,还需要做什么,向高手求解
- 使用本数据库的连接
- 大家是怎么签合同的阿
- Treeview 点击根节点为什么不能打开子节点
- 求教防注入,有没有可能继承一个类,直接在类的初始化事件里过滤掉所有表单和所有Request里敏感字符?
- 使用asp.net中的全球化方法做的多种语言版本的网站google.com,yahoo.com均不能收录?
- 无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“int”
- asp.net在dreamweaver中读access时,如何换行?
- 倒粪倒我这了。大家近来评评理。版主进来看看。。在非技术区放100分。顺便问大家周末愉快!帖子里有给分的链接!
- owc双坐标问题
- Asp.net+Jqgrid统一后台数据展示问题?
FCKeditor1.Value的值是string类型的,用正则很好提取出来的。
这一些标签不用考虑,因为没有图片资源地址。<img src = /images/pic.jpg/ > <img src =" /images/pic.jpg" > <img src= '/images/pic.jpg ' / >这一些标签都有图片资源地址,另外还有一个特点就是有引号对,可能为单引号,也可能为双引号。因为不需要同时匹配引号对,所以正则表达式可以这么写:@"<img\s*src\s*=\s*[""']?\s*(?[^\s""'<>]*)\s*/?\s*>"<img width="320" height="240" src=/images/pic.jpg onclick="window.open('/images/pic.jpg')">因为 img 和 src 之间可能会有其他的参数,所以“<img”要有个单词结束,比如说不能是“<imgabc”,同样 src 前面也是一样,使用单词结束符“\b”有一个好处就是省去了表示空格的“\s*”。另外由于 img 标签中不可以出现“<”、“>”这样的符号,所以要改写前面的正则表达式:@"<img\b[^<>]*?\bsrc\s*=\s*[""']?\s*(?<imgUrl>[^\s""'<>]*)[^<>]*?/?\s*>"<img width="320" height="240" src = "/images/pic.jpg" />像这种可能会用回车符折行的问题有时候会出现,所以在有空格分开的地方要包含回车换行和 TAB 字符,另外在图片地址中不能出现空格、TAB、回车和换行字符。所以上面的正则表达式可以改成:@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>"下面写出取得HTML中所有图片地址的静态方法。/// <summary>
/// 取得HTML中所有图片的 URL。
/// </summary>
/// <param name="sHtmlText">HTML代码</param>
/// <returns>图片的URL列表</returns>
public static string[] GetHtmlImageUrlList(string sHtmlText)
{
// 定义正则表达式用来匹配 img 标签
Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);// 搜索匹配的字符串
MatchCollection matches = regImg.Matches(sHtmlText);int i = 0;
string[] sUrlList = new string[matches.Count];// 取得匹配项列表
foreach (Match match in matches)
sUrlList[i++] = match.Groups["imgUrl"].Value;return sUrlList;
}该方法返回一个字符串数组,存放的就是从 sHtmlText 字符串中取得的图片地址列表。
这应该是非常简便的方法了
如此贴可:
http://topic.csdn.net/u/20081210/14/057823DD-2751-48A4-85DC-3DB28784B96A.htmlstring URL = @"((http|https):(\/\/|\\\\){1}((\w)+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*\/)((\S)+[.]{1}(gif|jpg|jpeg|png|bmp)))";
用这段可取出图片地址,我写的一个数据采集的程序就是采用这段正则解析图片地址的,很好用
Dim matchs As MatchCollection = Regex.Matches("", "<img\s[^> ]*src=([""']*)(?<src> [^'""]*)\1[^> ]*>", RegexOptions.IgnoreCase)
For Each m As Match In matchs
Response.Write(m.Groups("src ").Value)
Next
正在分析“ <img\s[^> ]*src=(["']*)(? <src> [^'"]*)\1[^> ]*>”- 无法识别的分组构造。
<?php
$reg=”/<\s*img\s+[^>]*?src\s*=\s*(\’|\”)(.*?)\\1[^>]*?\/?\s*>/i”;
preg_match($reg,$_POST['neirong'],$matches);
echo “$matches[2]“;
?>
这个绝对可以用