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

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

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

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

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

替换成:style/images/$2

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

import javautilregexMatcher;

import javautilregexPattern;

public class CC {

 public static void main(String[] args) {

  String s="<img src=\"/abc/efg/qwe/1gif\">";

  String regex="(<=<img src=\")(/+/)(+\\(gif|jpg|png))(=\">)";

  Pattern p=Patterncompile(regex);

  Matcher m=pmatcher(s);

  while(mfind()){

   Systemoutprintln(mgroup());

   Systemoutprintln(mgroup(2));

  }

  Systemoutprintln(sreplaceAll("(<=<img src=\")(/+/)(+\\(gif|jpg|png))(=\">)", "style/images/$2"));

 }

}

运行结果:

/abc/efg/qwe/1gif

1gif

<img src="style/images/1gif">

试编写代码示例如下:

<php

$content = <<< TTTT

"<td width="125" colspan="2" rowspan="4" align="center" valign="middle" ><img src="__PUBLIC__/images/577f852e40237jpg" title="" width="120" height="120" /> </td>";

TTTT;

preg_match_all('/<img src="()"/i',$content ,$matches, PREG_SET_ORDER);

echo '<pre>';

print_r($matches);

echo '</pre>'

echo $matches[0][1];

>

代码运行结果:

<php

$test = '<p>444<img height="768" width="1024" alt="" src="/uploadfiles/28/Treejpg" /></p><p>444<img height="768" width="1024" alt="" src="/uploadfiles/sf/Treejpg" /></p>

fsdafasdfasdfasdf

<p>444<img height="768" width="1024" alt="" src="/uploadfiles/28/elmjpg" /></p><img height="768" width="1024" src="/uploadfiles/40/Treejpg" />

sdfasdfasdf<p>

<p>444<img height="768" width="1024" alt="" src="/uploadfiles/28/maplejpg" /></p>

<img height="768" width="1024" src="/uploadfiles/40/Treejpg" />

sdf32414撒旦发是否

<p>444<img height="768" width="1024" alt="" src="/uploadfiles/40/Treejpg" /><img height="768" src="/uploadfiles/40/Treejpg" /></p><img height="768" src="/uploadfiles/40/Treejpg" />tttt<img height="768" src="/uploadfiles/40/Treejpg" />';

preg_match_all("<imgsrc=\"()\">",$test,$match); //这里是关键

foreach($match[1] as $val){

echo basename($val);

echo "<br />";

}

>

preg_match('/src=\"()\"<\/p>/i',$str,$rg3);

做不到是因为“”是一个贪婪的表达式,它会一直匹配到字符串结尾,所以这里之后的东西自然就不符合你的表达式,用“”消除贪婪,它会尽可能少匹配字符

改为:

preg_match_all("/src=\"(file:\/\/\/\png)\"/i",$str,$a);

这正则写的,。、。,

foreach($matches[1] as $value) // [1]匹配的第一个()组的内容

{

echo mypath$value;

}

以上就是关于求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径全部的内容,包括:求教php正则高手。php正则获取html内容中的所有img路径及名称,替换img的路径、php求正则大神帮助、用PHP获取HTML中的图片地址并全部列出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10148208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存