微信小程序转百度小程序代码
听说百度小程序开始出现手机端搜索流量,作为SEO一员,必须搞他。但是又奈何之前做的都是微信小程序,所以用php写了一个微信小程序转百度小程序代码。
修改文件后缀名
- .wxml转换为.swan
- .wxss转换为.css
修改文件内容
- .js文件:将wx.替换为swan.
- .swan文件:
- 循环部分:
- wx:for="{{var}}替换为s-for="var"
- wx:key替换为s-for-index
- wx:for-item替换为s-for-item
- 条件部分:
- wx:if="{{expression}}替换为s-if="expression"
- wx:elif="{{expression}}替换为s-elif="expression"
- wx:else替换为s-else
- 模板:需将data属性两个大括号替换为三个大括号
修改以下代码中的小程序所在目录,运行即可自动转换
<?php
class Convert_wx_to_bd
{
private $project_dir;
private $ext_rules;
public function __construct($project_dir, $ext_rules = array('wxml' => 'swan', 'wxss' => 'css'))
{
$this->project_dir = $project_dir;
$this->ext_rules = $ext_rules;
//修改根目录app.wxss后缀及app.js内容
$this->convert_root();
//批量修改文件后缀:.wxml转换为.swan,.wxss转换为.css
$this->convert_ext($this->project_dir.'/'.'pages', $this->ext_rules);
//批量修改语法部分
$this->convert_text($this->project_dir.'/'.'pages');
}
/**
*
*/
private function convert_root() {
//修改根目录.wxss文件后缀
rename($this->project_dir.'/'.'app.wxss', $this->project_dir.'/'.'app.css');
//修改根目录app.js文件语法部分
$app_js = $this->project_dir.'/'.'app.js';
$text = file_get_contents($app_js);
$text = str_replace('wx.', 'swan.', $text);
file_put_contents($app_js, $text);
}
/**
* 批量修改文件后缀名
* @param $path 文件夹路径
* @param $ext_rules 文件后缀替换规则
* @return void
*/
private function convert_ext($path, $ext_rules)
{
$handle = opendir($path);
if ($handle) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != '..') {
if (is_dir($path . '/' . $file)) {
$this->convert_ext($path . '/' . $file, $ext_rules);
} else {
$path_info = pathinfo($file);
$ext = $path_info['extension'];
$all_exts = array_keys($ext_rules);
if (in_array($ext, $all_exts)) {
$src = $path . '/' . $file;
$dext = $ext_rules[$ext];
$fileName = $path_info['filename'];
$dest = $path . '/' . $fileName . '.' . $dext;
rename($src, $dest);
}
}
}
}
}
}
/*
* js文件:
* 1、wx.替换为swan.
* .swan文件:
* 1、.wxml替换为.swan
* 2、.wxss替换为.css
* 循环:
* 3、wx:for="{{var}}替换为s-for="var"
* 4、wx:key替换为s-for-index
* 5、wx:for-item替换为s-for-item
* 条件:
* 6、wx:if="{{expression}}替换为s-if="expression"
* 7、wx:elif="{{expression}}替换为s-elif="expression"
* 8、wx:else替换为s-else
* 模板:
* 9、<template is="var" data="{{{var}}}" />需将data属性两个大括号替换为三个大括号
*/
private function convert_text($path)
{
$handle = opendir($path);
if ($handle) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != '..') {
if (is_dir($path . '/' . $file)) {
$this->convert_text($path . '/' . $file);
} else {
$path_info = pathinfo($file);
$ext = $path_info['extension'];
$src = $path . '/' . $file;
if ('js' == $ext) {
$text = file_get_contents($src);
$text = str_replace('wx.', 'swan.', $text);
file_put_contents($src, $text);
}
if ('swan' == $ext) {
$text = file_get_contents($src);
$text = str_replace('.wxml', '.swan', $text);
$text = str_replace('.wxss', '.css', $text);
$text = preg_replace("/wx:for=([\"|'])\{\{(.*?)\}\}([\"|'])/", "s-for=$1$2$3", $text);
$text = str_replace('wx:key', 's-for-index', $text);
$text = str_replace('wx:for-item', 's-for-item', $text);
$text = preg_replace("/wx:if=([\"|'])\{\{(.*?)\}\}([\"|'])/", "s-if=$1$2$3", $text);
$text = preg_replace("/wx:elif=([\"|'])\{\{(.*?)\}\}([\"|'])/", "s-elif=$1$2$3", $text);
$text = str_replace('wx:else', 's-else', $text);
$text = preg_replace("/data=([\"|'])\{\{(.*?)\}\}([\"|'])/", "data=$1{{{\$2}}}$3", $text);
file_put_contents($src, $text);
}
}
}
}
return false;
}
}
}
$obj = new Convert_wx_to_bd('C:/mini');
exit('SUCCESS!');
?>
微信小程序转百度小程序代码的更多相关文章
- 微信小程序转换为百度小程序
据粗略预估,微信小程序和百度小程序,有至少90%以上的相似代码,而且api的参数和返回的数据都是一致的,有一些不一致的将做如下介绍:.wxml文件,改成后辍名.swan.wxss文件,改成后辍名为.c ...
- 微信小程序转百度小程序修改
百度小程序对比微信小程序(最初版):[设备]项里没有内存监控.iBeacon.wifi.蓝牙.用户截屏.手机联系人.NFC[位置]项里没有打开地图选择位置[界面]项里没有绘图功能.没有节点信息获取功能 ...
- 百度小程序-form表单点击提交,input框内容不会清空
百度小程序与微信小程序相似度90%.微信小程序转换为百度小程序,部分还是需要人工修改! 做了一个form留言表单,点击提交之后,input框第一次会清空,但是第二次就不会清空了! 不多说直接上代码! ...
- 微信小程序接入百度统计
一. 百度统计添加应用,获取appkey和微信小程序统计sdk: 1. 百度统计首页,点击“我的全部应用”右侧的添加按钮: 2. “应用类型”选择小程序统计,选择微信小程序,填写应用名称信息,选择内容 ...
- 微信小程序接入百度OCR(身份证识别)
微信小程序接入百度OCR(身份证识别) 1.接口描述 支持对二代居民身份证正反面所有8个字段进行结构化识别,包括姓名.性别.民族.出生日期.住址.身份证号.签发机关.有效期限,识别准确率超过99%:同 ...
- 记录一次用宝塔部署微信小程序Node.js后端接口代码的详细过程
一直忙着写毕设,上一次写博客还是元旦,大半年过去了.... 后面会不断分享各种新项目的源码与技术.欢迎关注一起学习哈! 记录一次部署微信小程序Node.js后端接口代码的详细过程,使用宝塔来部署. 我 ...
- 微信小程序(有始有终,全部代码)开发--- 新增【录音】以及UI改进
开篇语 寒假发了一篇练手文章,不出意外地火了: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本,出乎意料的火了: 简年18: ...
- 微信小程序(有始有终,全部代码)开发--- 新增模块: 图片选取以及拍照功能
开篇语 前几天发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本: 简年18: 微信小程序(有始有终,全部代码)开发 ...
- 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 Bug修复
开篇语 昨晚发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 然后上午起来吃完午饭之后,我就准备继续开工的,但是突然的,想要看B站.然后在一股 ...
随机推荐
- CentOS下安装Tomcat
CentOS版本:CentOS-7-x86_64-Minimal-1810 1.安装JDK 详情查看:CentOS下安装JDK-rpm文件.CentOS安装JDK-tar.gz文件 2.下载tomca ...
- bridge和原生交互的简单用法
首先获取当前环境是ios还是Android var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u ...
- centos 7 下使用jexus 配置ASP.NET Core
1.安装jexus Jexus独立版(专业版)的安装 Jexus“独立版”指的是自带.net运行时(mono),不需要在客户服务器安装mono就能正常运行的Jexus版本,该版本只支持 64位Linu ...
- Java生产消费者模型——代码解析
我们将生产者.消费者.库存.和调用线程的主函数分别写进四个类中,通过抢夺非线程安全的数据集合来直观的表达在进行生产消费者模型的过程中可能出现的问题与解决办法. 我们假设有一个生产者,两个消费者来共同抢 ...
- 爬虫 request payloa
小知识点: https://blog.csdn.net/zwq912318834/article/details/79930423
- memcached源码分析三-libevent与命令解析
转载请注明出处https://www.cnblogs.com/yang-zd/p/11352833.html,谢谢合作! 前面已经分析了memcached中的slabs内存管理及缓存对象如何利用ite ...
- HTTP响应状态
状态码分类 状态码详解 状态码 英文提示 说明 100 Continue 继续 101 Switching Protocols 切换协议.服务器根据客户端的请求切换协议.只能切换到更高级的协议,例如, ...
- P1349 广义斐波那契数列(矩阵乘法)
题目 P1349 广义斐波那契数列 解析 把普通的矩阵乘法求斐波那契数列改一改,随便一推就出来了 \[\begin{bmatrix}f_2\\f_1 \end{bmatrix}\begin{bmatr ...
- ASPxComboBox默认情况下不显示代码和名称,特别头疼,直到发现了关键
1.ASPxComboBox 默认不开启 AutoPostBack: 既是开启,总显示第一行(好像是个bug) 2.只好ajax,但是默认情况下不显示代码和名称,特别头疼,直到发现了关键 <dx ...
- 解决SqlDataSource连接超时的问题
采用两种策略: 1.连接字符串增加Connect Timeout=1000(大约1000秒/60=16分钟) 2.设置SqlDataSourced 的 EnableCaching="True ...