- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網協(xié)會理事單位
- 安全聯(lián)盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
網上有很多類似壓縮html代碼的,可是找了許多,代碼的確是可以壓縮,但是就只留一個代碼?喵喵喵???怎么實際的用都不說明一下
然后我結合我自己的代碼修改了一下,首先網上都是提供的一個函數,那么首先得獲取php生成的代碼呀
然后就可以使用
ob_start();//打開緩沖區(qū)
然后在使用
ob_get_clean();//獲取緩沖區(qū)并且清除
這樣就得到了網站生成的html代碼
然后就可以進行代碼壓縮
$content = "html內容";
$output = ltrim(rtrim(preg_replace(array("/> *([^ ]*) *[ ]+\\1<'],$content)));
這樣就可以壓縮代碼了!可是這并沒有完,我把這些代碼用到網站里面的時候,壓縮沒問題,可是到了有代碼顯示(及pre標簽)的頁面,顯示的pre標簽里面的代碼全部變成一行了?什么鬼....
然后找了半天最后發(fā)現(xiàn)....是代碼壓縮的鍋..然后pre標簽本身是按照編輯器回車來確定換行的,所以html源碼里面也會有換行,那么咋辦呢
當然就是在壓縮html代碼的時候不要去壓縮pre標簽咯
然后我選擇用正則先提取出來pre標簽,然后壓縮完成后在進行還原代碼
所以最終的代碼
$data = [];//存放pre標簽內容
$i = 0;//pre標簽下標
htmlFilterPreCompress($data,$content,$i);
function htmlFilterPreCompress($data,$content,$index){
$pre = "/<pre[\s\S]*?/";
if(preg_match($pre,$content,$m)){
//替換
$content = str_replace(current($m),"[HTML_COMPRESS]{$index}[/HTML_COMPRESS]",$content);
$data[$index] = current($m);
$index++;
//遞歸再次去檢測一次
$this->htmlFilterPreCompress($data,$content,$index);
}else{
$output = ltrim(rtrim(preg_replace(array("/> *([^ ]*) *[ ]+\\1$val){
$output = str_replace("[HTML_COMPRESS]{$key}[/HTML_COMPRESS]",$val,$output);
}
echo $output;
}
}
恩,代碼就是這樣的
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP