微信小程序轉百度小程序代碼


  聽說百度小程序開始出現手機端搜索流量,作為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!');
?>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM