PHP 正则表达式 获取富文本中的 img标签的src属性
时间:2022-07-24
本文章向大家介绍PHP 正则表达式 获取富文本中的 img标签的src属性,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
- 前言
鄙人发现对于微信看看中的文章,一般都会有三张摘要图片;
所以想着可以直接提取富文本中的
<img>
标签的src 属性信息
; 这样就可以在前台的 文章列表中展示三张图片(建议不要多了),吸引阅读,美化布局…
- 环境
- 首先要知道,虽然正则表达式学习起来比较通用,但是不同的语言还是会有所差异;
- 我选用的是 PHP语言,所以需要提醒下参考环境,虽然问题也不大
- 场景分析
起先我测试使用的正则表达式如下:'/<imgb.+bsrcbs*=s*['"]([^'"]*)['"]/iU';
想着可以一次性匹配出需要的信息;
但是发现遇到很多阻碍(主要还是不够扎实)
后面发现可以先匹配出 <img> 标签:'/<imgb.*?(?:>|/>)/i'
然后再循环匹配出 src 属性信息:'/bsrcbs*=s*['"]?([^'"]*)['"]?/i'
既便于理解,又不影响效果!!
【分析时的注重点】
- 1. <img> 标签是忽略大小写的,并且 标签结尾 使用 > 或者 />
- 2. src 属性信息一般是以".jpg|.png|.jpeg|.gif"结尾的;
但是也有的不需要扩展没那个结尾(只是个图片链接)
- 3. 注意匹配的结尾形式 ([^'"]*) 匹配不上单引号和双引号的字符
- 整理后的处理源码如下:
/**
* 对富文本信息中的数据
* 匹配出所有的 <img> 标签的 src属性
* @param string $contentStr 富文本字符串
* @return array
*
*/
function getPatternMatchImages($contentStr = ""){
$imgSrcArr = [];
//首先将富文本字符串中的 img 标签进行匹配
$pattern_imgTag = '/<imgb.*?(?:>|/>)/i';
preg_match_all($pattern_imgTag,$contentStr,$matchIMG);
if (isset($matchIMG[0])){
foreach ($matchIMG[0] as $key => $imgTag){
//进一步提取 img标签中的 src属性信息
$pattern_src = '/bsrcbs*=s*['"]?([^'"]*)['"]?/i';
preg_match_all($pattern_src,$imgTag,$matchSrc);
if (isset($matchSrc[1])){
foreach ($matchSrc[1] as $src){
//将匹配到的src信息压入数组
$imgSrcArr[] = $src;
}
}
}
}
//$pattern= '/<imgb.+bsrcbs*=s*['"]([^'"]*)['"]/iU';
return $imgSrcArr;
}
【附录】
- ①. 参考文章
------
如何通过正则表达式获取img标签的src属性
------PHP正则表达式,看这一篇就够啦!
- ②. 推荐学习——
正则表达式 - 匹配规则
- 跟张志东深聊腾讯的“进化力”
- 详解微信小程序如何实现流程进度功能
- silverlight:如何在图片上挖个洞?
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
- mysqldump数据导出问题和客户端授权后连接失败问题
- Android置底一个View后运行报错
- 温故而知新:设计模式之抽象工厂(AbstractFactory)
- mysql操作命令梳理(1)-索引
- Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)
- centos6.5虚拟机安装后,没有iptables配置文件
- 温故而知新:设计模式之Builder
- 温故而知新:设计模式之单件模式(Singleton)
- sudo命令使用的几个场景
- .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 已拿Offer!百度、字节跳动等后台面经
- Python Networkx基础知识及使用总结
- AkShare-沪深港通持股-个股排行
- Python SQLite常见异常及解决办法
- IPC—进程间通信的基础概念
- Python Django开发 经验技巧总结(一)
- Python SQLite 基本操作和经验技巧(二)
- AkShare-股票数据-主要股东
- 进程间通信的方式(1)
- Python Django开发 经验技巧总结(二)
- 进程间通信的方式(2)
- AkShare-股票数据-机构持股
- View的滑动方式 详细介绍
- AkShare-期货数据-分时数据
- Python 爬取留言板留言(三):多进程版+selenium模拟