求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径

例如html代码中包含<imgsrc="/abc/efg/qwe/1.gif">这个GIF可能是jpg或者png正则获取/abc/efg/qwe/1.gif正则获取1.g... 例如html 代码中包含<img src="/abc/efg/qwe/1.gif">这个GIF可能是jpg或者png
正则获取/abc/efg/qwe/1.gif
正则获取1.gif
正则替换/abc/efg/qwe/1.gif为style/images/1.gif
谢谢大神们
展开
 我来答
紫薇参星
科技发烧友

2016-05-08 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3511万
展开全部

正则表达式:(?<=<img src=\")(/.+/)(.+?\.(gif|jpg|png))(?=\">)

分别取第0和第2捕获组的数据,就是你要的获取/abc/efg/qwe/1.gif和获取1.gif的数据

替换你可以用上面的正则表达式:(?<=<img src=\")(/.+/)(.+?\.(gif|jpg|png))(?=\">)

替换成:style/images/$2

我给你一个用Java实现的上述正则表达式的例子.

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CC {
 public static void main(String[] args) {
  String s="<img src=\"/abc/efg/qwe/1.gif\">";
  String regex="(?<=<img src=\")(/.+/)(.+?\\.(gif|jpg|png))(?=\">)";
  Pattern p=Pattern.compile(regex);
  Matcher m=p.matcher(s);
  while(m.find()){
   System.out.println(m.group());
   System.out.println(m.group(2));
  }
  System.out.println(s.replaceAll("(?<=<img src=\")(/.+/)(.+?\\.(gif|jpg|png))(?=\">)", "style/images/$2"));
 }
}

运行结果:

/abc/efg/qwe/1.gif
1.gif
<img src="style/images/1.gif">

吼怕粒出完美18f97
2016-05-07 · TA获得超过421个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:96.9万
展开全部
去学习下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式