了解过百度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()函数对指定字符串进行替换,示例如下所示:
<?phpecho 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为你要替换字符的主体内容
利用PHP str_replace()函数替换符合百度MIP内容标准
原文地址:https://www.cnblogs.com/svip7/p/phpzifuchuantihuan.html