了解过百度MIP的同学都知道(什么?你不知道什么是百度MIP?就是移动网页加速器鸭?)某一些标签是禁止使用的!而我们使用的phpcms程序页面内容往往就包含了这些标签,比如img style等等……最后导致我们MIP效验不通过。
既然知道了问题所在,那么问题就简单多了。把禁用标签替换成符合MIP的标准不就可以了吗
那么怎么替换呢?下面我们简单了解一下str_replace()函数
通过字串符str_replace()函数替换可以实现对指定字符串中的指定字符进行替换。
其语法格式如下的形式:
str_replace(find,replace,string,count)
其参数说明如下:
参 数 | 说 明 |
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。对替换数进行计数的变量。 |
注释:该函数区分大小写。请使用 str_ireplace() 函数执行不区分大小写的搜索。
注释:该函数是二进制安全的。
使用str_replace()函数对指定字符串进行替换,示例如下所示:
<?php echo str_replace("world","Shanghai","Hello world!"); ?>
好了,相信你也对str_replace()函数有了大概了解,当然了 php字符串替换还有几个函数
strtr()
substr_replace()
preg_replace()
在这里我就不一一例举了,明白就行。下面就直接进入主题吧!
function mip_replace($content = ''){ $pattern = "#<img.*?src=['\"](.*?)['\"].*?>#ims"; $imgcontent=array(); preg_match_all($pattern,$content,$img); $imgcontent = $img[0]; $imgurl = $img[1]; foreach($imgcontent as $key=>$image) { $temp = str_replace('<img','mip-img',$image); $temp = str_replace('/>','></mip-img',$temp); $url = $imgurl[$key]; $url = mip_format_img_url($url); $temp = preg_replace("/src=['\"].*?['\"]/si","src=\"$url\"",$temp); $mipimg[$key] = $temp; } $content = preg_replace($imgcontent,$mipimg,$content); $content =preg_replace("/<a /si","<a target=\"_blank\" ",$content); $content =preg_replace("/style=\".*?\"/si","",$content); return mip_utf8($content); } function mip_format_img_url( $url = ''){ if(stripos($url, 'http') === 0 || stripos($url, 'ftp') === 0 ){ return $url; } if(stripos($url, '/') === 0){ $url = 'http://'.$_SERVER['HTTP_HOST'].$url; }else{ $url = 'http://'.$_SERVER['HTTP_HOST'].'/'.$url; } return $url; } function mip_utf8($string = '') { $fileType = mb_detect_encoding($string , array('UTF-8','GBK','LATIN1','BIG5')); if( $fileType != 'UTF-8'){ $string = mb_convert_encoding($string ,'utf-8' , $fileType); } return $string; }
食用方法:上面代码直接放到公共全局文件。最后通过调用 mip_replace($content) ,其中变量$content为你要替换字符的主体内容