• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php如何根据不同的条件替换html代码中的img标签

php 搞代码 3年前 (2022-01-21) 21次浏览 已收录 0个评论

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

一、需求

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

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

二、实现过程

1、获取到一段html代码中所有img标签的src属性

 preg_match_all('/<img[^>]*?src="([^"]*?)"[^>]*?>/i',$content,$match);     $srcArr = $match[1];

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

2、当处理完逻辑之后,我们需要再把处理后的src分别赋值给每个img标签

$rules = '#<img(.+?)src="([^"]+?)"([^>]*?)>#'; preg_replace($rules,"<img$1src=\"$base64\"$3>",$content);

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

3、最终方案

//申明正则匹配规则 $rules = '#<img(.+?)src="([^"]+?)"([^>]*?)>#'; //这里是循环,通过循环来匹配相应的img标签    for($i=0;$i<$count;$i++) {    //关键就是这个preg_replace_callback函数,它比着传统的正则替换,多了一个callback函数,可以让我们写自己的逻辑,use()里面是我们需要用到的参数      $newContent =  preg_replace_callback('#<img(.+?)src="([^"]+?)"([^>]*?)>#', 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]          re<p>4本文¥来源gao!%daima.com搞$代*!码$网9</p><pre>搞代gaodaima码

turn "<img src=\"$base64[$i]\">"; }else { //如果条件不符合,就不替换 return $m[0]; } }, $content);

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

相关文章推荐:

php如何利用32进制实现对id的加密解密(附代码)

php中四种安全过滤函数的总结(附代码)

以上就是php如何根据不同的条件替换html代码中的img标签的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php如何根据不同的条件替换html代码中的img标签

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址