这篇文章给大家介绍的内容是关于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 "";

}else {

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

return $m[0];

}

}, $content);

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

相关文章推荐:

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

  1. html表格中加入内容吗,制作html帖第二课:在表格中添加文字和图片

    3.在html格式下插入图片代码及图片地址 帖图基本格式如下: 称图形标记,主要用来插入图形标记. 方法:在表格中输入"内容"两字,点开html将你编辑好的代码及图片地址粘贴上, ...

  2. c语言一个数中是否含有8,要心中有“数”——C语言初学者代码中的常见错误与瑕疵(8)...

    在 飞鸟_Asuka网友指出"是不是时间复杂度比较大",并说他"第一眼看到我就想把它当成一个数学问题来做"之后,我又重新对问题进行了数学式的思考后发现的. 这个 ...

  3. js实现替换指定字符后面的内容(包括指定字符)

    href = '223d啥啥啥d dds word sss 1233;var indexOf = href.indexOf('word'); len = href.substring(indexOf, ...

  4. python查找并修改文件中的内容_如何使用Python搜索和替换文件中的文本?

    如何使用Python搜索和替换文件中的文本? 如何使用Python 3搜索和替换文件中的文本? 这是我的代码:import osimport sysimport fileinputprint (&qu ...

  5. .net trim 替换指定字符_CAD二次开发实例:批量文本查找替换

    # 0. 引言 在CAD中进行文本替换已经存在一个find命令了,但是只能进行一对一的文本替换,如果遇到一个图形文件中有很多个文本需要替换时,你不可能一个一个的去find替换吧,当然你也可以尝试一个一 ...

  6. Windows 核心编程研究系列之二 读取指定物理内存地址中的内容

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! [原创/ ...

  7. html中文本信息导出表格中,了解如何使用表格在网站中显示内容

    了解如何使用表格在网站中显示内容.此外,还可了解如何拆分和合并表格单元格以及如何导入和导出表格式数据. 表格是用于在 HTML 页上显示表格式数据以及对文本和图形进行布局的强有力的工具.表格由一行或多 ...

  8. 如何提取Excel中部分内容?

    目录 一.提取Excel中的内容 1.函数法 2.利用查找替换 二.补0操作 一.提取Excel中的内容 提取Excel中的内容太难?那是因为你不会这2种方法. 如下图所示,如何提取每位客户电话中的手 ...

  9. python tag对象下有多个标签、属性_Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释...

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 如何利用Python爬虫库BeautifulSoup获取对象(标签) ...

最新文章

  1. 飞书携手问卷网并肩抗“疫”,助力疫情信息申报收集工作
  2. 解决vue-awesome-swiper中swiper/css/swiper.css无法导入问题
  3. 揭秘python的5种最佳调试方法_揭秘 IPython 的 5 种最佳调试方法-阿里云开发者社区...
  4. matlab_ga(),matlab遗传算法ga函数
  5. 《PHP精粹:编写高效PHP代码》——1.1节为什么要使用面向对象编程
  6. win10安装mysql5.7.15_win10上如何安装mysql5.7.16(解压缩版)
  7. Python爬虫基础-01-带有请求参数的爬虫
  8. win10系统ltsc和服务器版哪个好,win10哪个版本最稳定流畅
  9. CCIE--PIM+DMVPN+MSDP
  10. 详解TCP数据包中SYN,ACK字段与数据发送的关联
  11. 李占通他道出了我的心声
  12. Java多线程学习(吐血超详细总结)
  13. Google谷歌新手SEO优化教程篇【1】
  14. centos7下docker-mysql5.7实现主从复制(精简教程)
  15. 怎么有python画五角星_Python的画五角星
  16. 微信小程序开发语言(微信小程序开发教程)详细步骤
  17. 哈利.波特与混血王子
  18. 环境工程部门怎么实施自动化软件学习时间更多
  19. c语言实验心得100字,实验心得100字_100个面试常见经典问题_100个面试问题和答案...
  20. 大数据分析与应用(中级) 大数据分析概述

热门文章

  1. 1003 C语言输入以某个特殊输入为结束标志
  2. VS CODE离线安装C/C++扩展的方法
  3. et200sp模块接线手册_格力变频空调模块常见故障处理。
  4. 无人驾驶入门(影子测试)
  5. 串行异步通信_每天学一点/ 电工:PLC:串行通信
  6. div css 登录页面布局,DIV+CSS页面布局
  7. windows c++ cjson 使用_cJSON源码剖析
  8. 如何让地面不起灰_解决水泥地面起灰的省钱方法
  9. matlab实现prim算法,Prim算法和Kruskal算法的Matlab实现
  10. form表单通过checkbox_HTML表单标签基础