求教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
谢谢大神们 展开
正则获取/abc/efg/qwe/1.gif
正则获取1.gif
正则替换/abc/efg/qwe/1.gif为style/images/1.gif
谢谢大神们 展开
2个回答
展开全部
正则表达式:(?<=<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">
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询