pbootcms小程序解析页面出现空白或者解析页面失败的问题
背景:在pbootcms与小程序互通的过程中,使用的是wxParse进行解析html页面,因为小程序不支持复杂的样式,所以有的时候小程序页面会显示空白等解析失败问题,这里就是为了解决这个问题
核心思路:
在请求api.php的过程中针对pb返回的页面内容事先通过正则的方式进行去除一些不能解析的代码
处理步骤:
1)在\apps\api\controller\ContentController.php 中添加一行调用解析方法的代码

$data->content = KillStyle($data->content);
2)在\apps\common\function.php 中添加KillStyle方法

function KillStyle($content) { //echo"进入KillStyle===="; //var_dump($content); $content = preg_replace("/STYLE=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/style=.+?['|\"]/i",'',$content);//去除样式 //var_dump($content); $content = preg_replace("/class=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/id=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/class=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/id=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/lang=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/width=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/height=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/border=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/face=.+?['|\"]/i",'',$content);//去除样式 $content = preg_replace("/face=.+?['|\"]/",'',$content);//去除样式只允许小写正则匹配没有带 i 参数 $content = preg_replace("/<a[^>]*>/i", "", $content); $content = preg_replace("/<\/a>/i", "", $content); $content = preg_replace("/<div[^>]*>/i", "", $content); $content = preg_replace("/<\/div>/i", "", $content); $content= preg_replace("/<!--[^>]*-->/i", "", $content);//注释内容 $content= preg_replace("/|<\/p>/is","", $content); $content= preg_replace("/|<\/span>/is","", $content); $content = preg_replace("/<(script.*?)>(.*?)<(\/script.*?)>/si","",$content); //过滤script标签 return $content; }
栗子:
pc网站:
http://www.mybancai.cn/industry/107.html

上面红圈部分,基本上是直接解析不了的
小程序页面:
https://b5u7wv.smartapps.cn/pages/news-detail/news-detail?id=107

浙公网安备 33010602011771号