php 替换指定标签中的内容,php如何根据不同的条件替换html代码中的img标签

这篇文章给大家介绍的内容是关于php根据不同的条件替换一段html代码中的不同的img标签,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、需求

这次的需求是获取到一段html代码,这段代码里面含有多个img标签。需求就是先获取到这些img标签的src属性,然后进行业务编写。业务编写之后,把新的src内容分别替换到不同的img标签中。

这部分逻辑听起来很简单,但实际操作还是有点难度,下面说一下解题过程。

二、实现过程

1、获取到一段html代码中所有img标签的src属性preg_match_all('/]*?src="([^"]*?)"[^>]*?>/i',$content,$match);

$srcArr = $match[1];

这里是利用正则匹配,$content是我们要提取的html代码,$match是获取到的数组。大家可以打印一下,$srcArr就是获取到的所有src属性的数组。这里可以通过循环来处理我们的逻辑。

2、当处理完逻辑之后,我们需要再把处理后的src分别赋值给每个img标签$rules = '#]*?)>#';

preg_replace($rules,"",$content);

这里还是使用正则匹配,但是如果按这种方式匹配的话,我们会把所有的img标签的src属性替换成$base64,这显然不是我们想要的结果。

3、最终方案//申明正则匹配规则

$rules = '#]*?)>#'; //这里是循环,通过循环来匹配相应的img标签

for($i=0;$i

//关键就是这个preg_replace_callback函数,它比着传统的正则替换,多了一个callback函数,可以让我们写自己的逻辑,use()里面是我们需要用到的参数

$newContent = preg_replace_callback('#]*?)>#', function($m) use($id,$i,$base64){

//var_dump($m[0]); 此处的$m[0]代表匹配到的第一个图片地址

//这里的$this->is_replace是我自己的一个函数,属于判断条件

if($this->is_replace($m[$i],$id,$i)) {

//如果符合的话,就替换为$base64[$i]

return "%5C%22%24base64%5B%24i%5D%5C%22";

}else {

//如果条件不符合,就不替换

return $m[0];

}

}, $content);

这个函数真的挺强大的,让我们可以在正则匹配中加入自己的逻辑,很赞。

相关文章推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值