这篇文章给大家介绍的内容是关于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] return img src=/ $base64[$i]/ }else { //如果条件不符合,就不替换 return $m[0]; }, $content);
这个函数真的挺强大的,让我们可以在正则匹配中加入自己的逻辑,很赞。
相关文章推荐:
php如何利用32进制实现对id的加密解密(附代码)
php中四种安全过滤函数的总结(附代码)
以上就是php如何根据不同的条件替换html代码中的img标签的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答