php专区

 首页 > php专区 > 正则表达式 > 正则获取图片地址 链接地址_正则表达式

正则获取图片地址 链接地址_正则表达式

分享到:
【字体:
导读:
          可以获取网页中所有的图片地址和链接地址的代码,好像一般用在获取网页中的资源地址时用的到...

复制代码 代码如下:

reg = /<[img|href][^>]*srcs*=s*('|")?([^'">]*)1([^>])*>/ig


正则获取图片地址

一、问题:

采集的过程中遇到一个问题:从数据库里读出来的图片没有正常显示,分析后发现是数据库里的图片以网站根目录为相对路径方式存储,图片地址如:/uploads/allimg/090403/012F31N9-1.jpg,原来做的读取图片是以http://开关的URL绝对图片获取,所以采集中出现以根目录开始的图片地址采集失败。

二、解决方案:

分析HTML代码,显示图片定用标签,写一个正则式获取里的图片地址再加网站的网站转换为URL的绝对地址,接着的事情交给后面的代码(远程图片获取到本地)。

1) 完善解决方法,以“”的属性、空格、多空格、单引号、双引号、不规范的属性引用(如单引号或双引号括起的属性值)等等。
2)应急解决方法,只要考虑“src=”属性开始的正则式,但这种方式存在不完善的地方,只要有“src=”出现在的都会被替换,出现“src="的可能性有:javascript,文本里出现的"src"等。但这些是比较少的,再加上一个图片格式做正则限定,出现被误替换的概率会更少。

三、实现代码:

考虑到第一种方法的难度暂时没有写,这里第二种应急解决方法实现(实现涉及的正则式内容这里不做讲解和分析,正则式的知识内容请google或baidu ^v^):

复制代码 代码如下:

//测试样式,考虑多种情况下的正则式。
$body = <<

1


2


3


4


5


6


7


HTML;

//网站的地址
$str='src=/'http://www.chongwen.com/';
$body=preg_replace('/src/s*?=/s*?[/"|/']?/s*?//(.+?/.(?:jpg|gif|png|bmp))(/"|/'|/s)*?/s*?/is',"$str$1 '",$body);
echo $body;
?>
分享到:
Java 正则表达式详解_正则表达式
如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。 正则表达式30分钟入门教程 常用正则表达式 许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那...
又一篇正则表达式学习笔记_正则表达式
1. \b:表示单词的开头或者结尾,可能是空格、标点符号或者换行,但是\b不匹配其中的任何一个,这是指代这些元素中的任一个位置。 示例:\bhi\b:查找文本中所有的“hi”单词,但是不包括him、history等字样 1.1 ^:匹配字符串的开始,特指一个段落的起始。 1.2 $:匹配字符串的结束。特指一个段落的结尾,这两个都是\b的子集...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……