微信小程序转百度小程序代码
听说百度小程序开始出现手机端搜索流量,作为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站.然后在一股 ...
随机推荐
- html5 canvas手写字代码(兼容手机端)
html5 canvas手写字代码(兼容手机端) <pre><!DOCTYPE html><html><head> <title>画板实验& ...
- navcat excel数据导入mysql的方法
navcat excel数据导入mysql的方法 先navcat导出 xls格式 然后把数据复制到往这个xls里 (按照这个xls格式) 然后导入mysql就行了 如果导入的过程无法识别excel里的 ...
- 004 Thymeleaf学习笔记
1.Thymeleaf概述 SpringBoot并不推荐使用jsp,但是支持一些模板引擎技术:Freemarker.Thymeleaf.Mustache. 简单说, Thymeleaf 是一个跟 Ve ...
- Opencv颜色识别与追踪
这是基于颜色识别的物体追踪 不废话 直接看代码 这是Opencv3的代码 //---------------------------------[头文件.命名空间包含部分]-------------- ...
- php 函数篇
1.array_values($data); 注:将关联数组转化为索引数组 <?php $a=array("Name"=>"Bill"," ...
- Shell编程入门基础上
前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...
- 《JAVA高并发编程详解》-程序可能出现死锁的场景
- Java ClassLoader 学习理解
/** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> * <p> ...
- onActivityResult方法的使用
转发自:https://blog.csdn.net/hacker_crazy/article/details/78345450 在进行界面间的跳转和传递数据的时候,我们有的时候要获得跳转之后界面传递回 ...
- Gson含抽象类的反序列化
Gson含抽象类的反序列化 场景描述: 反序列化A类的时候,这个类里面有一个抽象类属性B,B的实现类C里面又有一个抽象类属性D,D的实现类是E 实体类准备 public class A impleme ...