基于phpcms的百度mip内容转换方法(适用任何cms)

百度在2016年底推出了mip,具体可以百度搜索下是个什么情况,本代码是基于php实现的内容替换方法,不仅限于phpcms,任何其他cms都可以用.

注意仅仅是替换正文内容(标题也行)的,不是整套的模板解决方案哦.

 伦理片 http://www.dotdy.com/ 

Php代码   收藏代码
  1. /** 
  2.  * 百度mip内容标准替换方法 
  3.  * 
  4.  * @author [email protected] for http://www.soyiyuan.com/city/ 
  5.  * @createtime 2017-1-11 
  6.  * @modifytime 
  7.  * @param string $content 待转换的内容正文 
  8.  * @return string 
  9.  */  
  10. function mip_replace($content = ''){  
  11.     $pattern1 = "##ims";  
  12.         $imgcontent=array();  
  13.         preg_match_all($pattern1,$content,$img);  
  14.         $imgcontent = $img[0];  
  15.         $imgurl = $img[1];  
  16.         foreach($imgcontent as $imgk=>$imgv)  
  17.         {  
  18.           $temp =  str_replace(','mip-img',$imgv);  
  19.           $temp = str_replace('/>','>,$temp);  
  20.           $url = $imgurl[$imgk];  
  21.           $url = mip_format_img_url($url);  
  22.   
  23.           $temp = preg_replace("/src=['\"].*?['\"]/si","src=\"$url\"",$temp);  
  24.           $mipimg[$imgk] = $temp;  
  25.         }  
  26.   
  27.         $content = preg_replace($imgcontent,$mipimg,$content);  
  28.         $content =preg_replace("/,",$content);  
  29.         $content =preg_replace("/style=\".*?\"/si","",$content);  
  30.           
  31.         return mip_utf8($content);  
  32.           
  33. }  
  34.   
  35.         function mip_format_img_url( $url = ''){  
  36.             if(stripos($url'http') === 0 || stripos($url'ftp') === 0 ){  
  37.                 return $url;  
  38.             }  
  39.             if(stripos($url'/') === 0){  
  40.                 $url = 'http://'.$_SERVER['HTTP_HOST'].$url;  
  41.             }else{  
  42.                 $url = 'http://'.$_SERVER['HTTP_HOST'].'/'.$url;  
  43.             }  
  44.             return $url;  
  45.         }  
  46.   
  47.   
  48.   
  49.             function mip_utf8($string = '') {  
  50.   
  51.                 $fileType = mb_detect_encoding($string , array('UTF-8','GBK','LATIN1','BIG5'));  
  52.                 if$fileType != 'UTF-8'){  
  53.                     $string = mb_convert_encoding($string ,'utf-8' , $fileType);  
  54.                 }  
  55.                 return $string;  
  56.             }  
  57. ?>  

 

本代码考虑了编码问题,针对图片/样式等进行了替换,符合百度对mip的规范要求,有任何问题的可以跟帖说明.

使用方法:以上代码直接放到公共全局文件,或者模板里都行,

然后调用 mip_replace($content) ,变量$content根据你模板定义的来.

 

你可能感兴趣的:(PHP)