延迟加载文章里面的图片—php正则替换图片地址—phpcms适用
Author:zhoulujun Date:
首先我们来回顾下字符串处理
php字符串位置判断与统计
strstr -- 搜索一个字符串在另一个字符串中的第一次出现位置。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。, bool 类型判断时采用 === 全等判断,
注: 1、这个函数是大小写敏感的。2、strstr('12345','2') !== false,是 !==false,而不是!=false
$email = '[email protected]'; $domain = strstr($email, '@'); echo $domain; // prints @example.com
stristr与strstr 的区别就是stristr不分区大小写。
相对于前两者查找成功后返回的是字符,strpos查找成功后则是返回的是位置。因为位置有可能是0,所以判断查找失败使用===false更合适。
strpost() -- 查找字符串首次出现的位置,返回boolean值.
strpos的性能比较好,strpos在执行速度上都比以上两个函数快,如果只是判断needle是否在字符串haystack中,则使用strpos较好,它将占用更少的内存和获得更快的执行速度。但是strpos对特殊字符支持不好,比如对中文就不能很好支持。
if(strpos('www.jb51.net','jb51') !== false){ echo '包含jb51'; }else{ echo '不包含jb51'; }
strstr 区别大小写,从字符开始找如果有返回true否则就返回false
stristr 字符不区别大小写,从字符开始找如果有返回true否则就返回false
strpos 区别大小写strpos查找成功后则是返回的是位置。因为位置有可能是0,所以判断查找失败使用===false更合适。
if(strstr($HTTP_SERVER_VARS[HTTP_USER_AGENT], "Mozilla/5.0")) //支持特殊字符"/"和中文字符
if(strpos($HTTP_SERVER_VARS[HTTP_USER_AGENT], "Mozilla/5.0")) //对"/"和中文字符不支持
substr_count 统计“子字符串”在“原始字符串中出现的次数”
$number = substr_count(big_string, small_string);
strstr、stristr、strpos这三个函数的区别 https://blog.csdn.net/wustzbq0713/article/details/45586813
php正则替换preg_replace
官方语法:preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
参数说明:
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
$limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
$count: 可选,为替换执行的次数。
有点懵,不过看下案列还好
$str = 'runo o b'; $str = preg_replace('/\s+/', '', $str); // 将会改变为'runoob' echo $str;
查找下手册,应该会明白
php处理文章中图片,替换图片地址,延迟加载
结合上面的方法,代码处理如下
$content=' <p><img ><img ><img ><img ><img ><img src="https://www.zhoulujun.cn/uploadfile/2017/0724/20170724070528526.jpeg" title="1500894048836671.jpeg" width="240" height="164" alt="1500894048836671.jpeg" style="display: inline;"></p> '; echo substr_count($content,'<img '); if(substr_count($content,'<img ')>5&&strpos($content,'data-original')===false){ $pregRule = "/(<[img|IMG].*?src=)[\'|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"](.*?[\/]?>)/"; $content = preg_replace($pregRule, '$1"https://www.zhoulujun.cn/statics/images/andy/loading.gif" data-original="${2}"$3', $content); echo $content; }else{ echo $content; }
这个应该好理解
phpcms文章图片延迟加载
找到phpcms/templates/default/content/show.html 文件,修改content,代码如下
{if $allow_visitor==1} <?php if(substr_count($content,'<img ')>5&&strpos($content,'data-original')===false){ $pregRule = "/(<[img|IMG].*?src=)[\'|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"](.*?[\/]?>)/"; $content = preg_replace($pregRule, '$1"https://www.zhoulujun.cn/statics/images/andy/loading.gif" data-original="${2}"$3', $content); echo $content; }else{ echo $content; } ?>
在末尾,增加延迟加载js
<script src="//cdn.zhoulujun.cn/statics/js/andy/jquery.lazyload.min.js"></script> <script defer="defer" type="text/javascript"> $("#Article").find("img").lazyload({ placeholder: 'https://www.zhoulujun.cn/statics/images/andy/loading.gif', effect: "fadeIn", threshold: 200 }); </script>
这样phpcms文章就延迟加载了
转载本站文章《延迟加载文章里面的图片—php正则替换图片地址—phpcms适用》,
请注明出处:https://www.zhoulujun.cn/html/php/phpBase/2020_0201_8280.html