<img>
标签的 src 属性信息
;
这样就可以在前台的 文章列表中展示三张图片(建议不要多了),吸引阅读,美化布局… - 首先要知道,虽然正则表达式学习起来比较通用,但是不同的语言还是会有所差异;
- 我选用的是 PHP语言,所以需要提醒下参考环境,虽然问题也不大
起先我测试使用的正则表达式如下:'/<img\b.+\bsrc\b\s*=\s*[\'\"]([^\'\"]*)[\'\"]/iU';
想着可以一次性匹配出需要的信息;
但是发现遇到很多阻碍(主要还是不够扎实)
后面发现可以先匹配出 <img> 标签:'/<img\b.*?(?:\>|\/>)/i'
然后再循环匹配出 src 属性信息:'/\bsrc\b\s*=\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 = '/<img\b.*?(?:\>|\/>)/i';
preg_match_all($pattern_imgTag,$contentStr,$matchIMG);
if (isset($matchIMG[0])){
foreach ($matchIMG[0] as $key => $imgTag){
//进一步提取 img标签中的 src属性信息
$pattern_src = '/\bsrc\b\s*=\s*[\'\"]?([^\'\"]*)[\'\"]?/i';
preg_match_all($pattern_src,$imgTag,$matchSrc);
if (isset($matchSrc[1])){
foreach ($matchSrc[1] as $src){
//将匹配到的src信息压入数组
$imgSrcArr[] = $src;
}
}
}
}
//$pattern= '/<img\b.+\bsrc\b\s*=\s*[\'\"]([^\'\"]*)[\'\"]/iU';
return $imgSrcArr;
}
【附录】
如何通过正则表达式获取img标签的src属性
------ PHP正则表达式,看这一篇就够啦!
正则表达式 - 匹配规则