1. 程式人生 > >PHP用正則批量替換Img中src內容,用正則表示式獲取圖片路徑實現縮圖功能

PHP用正則批量替換Img中src內容,用正則表示式獲取圖片路徑實現縮圖功能

/**
* 圖片地址替換成壓縮URL
* @param string $content 內容
* @param string $suffix 字尾
*/
function get_img_thumb_url($content="",$suffix="!c550x260.jpg")
{
// by http://www.manongjc.com/article/1319.html
$pregRule = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
$content = preg_replace($pregRule, '<img src="${1}'.$suffix.'" style="max-width:100%">', $content);
return $content;
}
//by http://www.manongjc.com
$content = '<a href="#"><img class="center" src="https://xxx.com/styles/images/default.jpg"></a>'
.'<p><img class="center" src="https://img.xxx.com/images/219_Ig5eZI.jpg" style="max-width: 100%;"></p>';
$newct = get_img_thumb_url($content);
print_r($newct);
<a href="#"><img src="https://xxx.com/styles/images/default.jpg!c550x260.jpg" style="max-width:100%"></a><p><img src="https://img.xxx.com/images/219_Ig5eZI.jpg!c550x260.jpg" style="max-width:100%"></p>

自己的

 /**
     * 圖片地址替換成壓縮URL
     * @param string $content 內容
     * @param string $suffix 字尾
     */
    function get_img_thumb_url($content="",$suffix="")
    {
        $pregRule = "/<[img|IMG].*?src=[\'|\"](.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
        $content = preg_replace($pregRule, '<img src="'.$suffix.'${1}" style="max-width:100%">', $content);
        return $content;
    }

呼叫

 $params['maincontent'] = $this->get_img_thumb_url($params['maincontent'],'https://sali.vr68.com');

結果

<div style="text-align: center;"><b><span style="font-size: 18px;">中國杯帆船賽</span></b></div><div style="text-align: center;"><div style="text-align: left;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(51, 51, 51); font-family: arial, 宋體, sans-serif; font-size: 14px; text-align: start; text-indent: 28px;">中國杯帆船賽是中國歷史上第一個國際性大</span><a target="_blank" href="https://baike.baidu.com/item/%E5%B8%86%E8%88%B9" style="color: rgb(19, 110, 194); font-family: arial, 宋體, sans-serif; font-size: 14px; text-align: start; text-indent: 28px; background-color: rgb(255, 255, 255);">帆船</a><span style="color: rgb(51, 51, 51); font-family: arial, 宋體, sans-serif; font-size: 14px; text-align: start; text-indent: 28px;">賽事,亦是唯一以“中國杯”命名的大帆船賽事,也是亞太地區最大規模的Beneteau First 40.7統一設計組別大帆船賽事。 曾經於2008年、2009年連續兩度榮膺“亞太地區最佳帆船賽事”,2010年-2011年,中國杯帆船賽被正式列入ISAF(國際帆聯)大帆船賽事的日曆,是國內第一個進入國際帆聯歷的大帆船賽事。2015年,國際帆船聯合會授予“推動航海運動特別獎”。</span></div><div style="text-align: left;"><img src="https://sali.vr68.com/uploads/20180928/78c11aa134e99066a726c0ca408d4608.png" style="max-width:100%"><span style="color: rgb(51, 51, 51); font-family: arial, 宋體, sans-serif; font-size: 14px; text-align: start; text-indent: 28px;"><br></span></div><div style="text-align: left;"><img src="https://sali.vr68.comhttps://sali.vr68.com/uploads/20180928/fbf8799a777b1a09e05a5e16b65c5489.png" style="max-width:100%"><span style="color: rgb(51, 51, 51); font-family: arial, 宋體, sans-serif; font-size: 14px; text-align: start; text-indent: 28px;"><br></span></div><span style="font-size: 18px;"></span></div>