php正则保留原文并增加替换
编辑时间:2017-04-09 作者:金满斗 浏览量:2511 来源:原创

这几天在做另外一个东西,用到了七牛的云存储。发现七牛的图片有样式结构,只要在原图上拼接样式结构代码就可以输出带指定样式的图片了,这样可以大大的节省流量,提高访问速度。

比如原图是这个"http://omu6ey693.bkt.clouddn.com/image/j17efu7c_4idf9f338dgk58e7257990efd.jpg"

加上样式后,就是这样 http://omu6ey693.bkt.clouddn.com/image/j17efu7c_4idf9f338dgk58e7257990efd.jpg?imageMogr2/thumbnail/640x/format/webp/blur/1x0/quality/75|imageslim

这样图片小很多。

好了,闲话少叙,开工。直接在数据输出到模版的时候搞个正则替换即可。代码如下

/*为文章内容图片加上后缀,让速度快*/
    protected function getConImg($con=""){
        $par = $this ->Qiniu_http;
        $parrent = "#($par.*?)(\" )#";                 //注意这里用#是不需要转义的意思,原文匹配
        $text = "?".$this->Qiniu_imgSty."\" ";
        $str = preg_replace($parrent,'\1'.$text,$con);
        return $str;
    }

其中Qiniu_http是七牛的图片域名,Qinniu_imgSty是七牛的图片样式。$con 是文章内容。

个人认为知识点:正则里的#的应用 替换里\1的应用。

来说两句吧