听说百度小程序开始出现手机端搜索流量,作为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!');
?>

  

微信小程序转百度小程序代码的更多相关文章

  1. 微信小程序转换为百度小程序

    据粗略预估,微信小程序和百度小程序,有至少90%以上的相似代码,而且api的参数和返回的数据都是一致的,有一些不一致的将做如下介绍:.wxml文件,改成后辍名.swan.wxss文件,改成后辍名为.c ...

  2. 微信小程序转百度小程序修改

    百度小程序对比微信小程序(最初版):[设备]项里没有内存监控.iBeacon.wifi.蓝牙.用户截屏.手机联系人.NFC[位置]项里没有打开地图选择位置[界面]项里没有绘图功能.没有节点信息获取功能 ...

  3. 百度小程序-form表单点击提交,input框内容不会清空

    百度小程序与微信小程序相似度90%.微信小程序转换为百度小程序,部分还是需要人工修改! 做了一个form留言表单,点击提交之后,input框第一次会清空,但是第二次就不会清空了! 不多说直接上代码! ...

  4. 微信小程序接入百度统计

    一. 百度统计添加应用,获取appkey和微信小程序统计sdk: 1. 百度统计首页,点击“我的全部应用”右侧的添加按钮: 2. “应用类型”选择小程序统计,选择微信小程序,填写应用名称信息,选择内容 ...

  5. 微信小程序接入百度OCR(身份证识别)

    微信小程序接入百度OCR(身份证识别) 1.接口描述 支持对二代居民身份证正反面所有8个字段进行结构化识别,包括姓名.性别.民族.出生日期.住址.身份证号.签发机关.有效期限,识别准确率超过99%:同 ...

  6. 记录一次用宝塔部署微信小程序Node.js后端接口代码的详细过程

    一直忙着写毕设,上一次写博客还是元旦,大半年过去了.... 后面会不断分享各种新项目的源码与技术.欢迎关注一起学习哈! 记录一次部署微信小程序Node.js后端接口代码的详细过程,使用宝塔来部署. 我 ...

  7. 微信小程序(有始有终,全部代码)开发--- 新增【录音】以及UI改进

    开篇语 寒假发了一篇练手文章,不出意外地火了: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本,出乎意料的火了: 简年18: ...

  8. 微信小程序(有始有终,全部代码)开发--- 新增模块: 图片选取以及拍照功能

    开篇语 前几天发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本: 简年18: 微信小程序(有始有终,全部代码)开发 ...

  9. 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 Bug修复

    开篇语 昨晚发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 然后上午起来吃完午饭之后,我就准备继续开工的,但是突然的,想要看B站.然后在一股 ...

随机推荐

  1. python语法入门之变量

    目录 一.变量 1.1 什么是变量 1.2 怎么使用变量 1.3 变量名的命名规范 1.4 变量名的命名风格 1.5 变量的三大特征 2.常量 一.变量 1.1 什么是变量 # 变量就是可以变化的量, ...

  2. jquery+css 点赞喜欢特效

    百度盘链接 https://pan.baidu.com/s/1Nu8fiUrdffsNd6usTsUESg 密码 mps4 效果:

  3. 54 容器(九)——HashSet

    HashSet的特点: 无序,不可重复. HashSet实现自Set,而Set继承自Collection,在日常使用中,我们都是以Set引用指向HashSet对象的方式. 所以,Set中的方法是我们主 ...

  4. 【LeetCode】 #7:反转整数 C语言

    目录 题目 思路 初步想法 进一步想法 总结 最近打算练习写代码的能力,所以从简单题开始做. 大部分还是用C语言来解决. @(解法) 题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数 ...

  5. 【JVM】3、jvm参数和main方法参数

    在实际应用中,我们经常会使用一些额外的参数定义不通的环境下jvm的启动设置 特别是springCloud的项目,因为yml配置文件的问题,如果我们要做负载的话,会同时启动一个jar当做2个服务 那么这 ...

  6. 玩机之Honor_V10

    作为一个热爱手机的Geek,自然是经历了很多的刷机和改装手机的经验,当然翻车的经验也是有的.一般来说的折腾手机都是在遇到某一版本使用以及各方面都比较稳定的时候才会选择让手机停留在哪一版本.下面我就来分 ...

  7. Geoserver发布强制显示标签处理

    TextSymbolizer 增加如下配置: <!--  标签重叠也显示  --> <VendorOption name="conflictResolution" ...

  8. ElasticSearch动态修改副本个数

    创建只有 一个主分片,没有副本的小索引: PUT /my_temp_index{ "settings": { "number_of_shards" : 1, & ...

  9. ssm动态sql语句

    1.将上面的元素分为四组来演示,分别为:[if,where,trim],[if,set,trim],[choose,when,otherwise],[foreach] ________________ ...

  10. C# vb .net图像合成-合成富文本

    在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...