正则表达式:(<=<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中的图片地址并全部列出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)