PHP遞迴遍曆檔案夾去除注釋並壓縮php原始碼

來源:互聯網
上載者:User
這篇文章主要介紹了PHP遞迴遍曆檔案夾去除注釋並壓縮php原始碼的方法,涉及php檔案與目錄的遍曆、讀取、判斷及使用php_strip_whitespace函數刪除注釋的相關操作技巧,需要的朋友可以參考下

本文執行個體講述了PHP遞迴遍曆檔案夾去除注釋並壓縮代碼的方法。分享給大家供大家參考,具體如下:

<?php// ===================檔案夾 遞迴 去除PHP注釋並壓縮=========================header("content-type:text/html;charset=utf-8");$dir = "D:\sound\admin--";  // 需要轉換的檔案路徑。$fdir = "D:\sound\admin";  // 最終要放到的位置。$dir = str_replace('\\','/',$dir);$fdir = str_replace('\\','/',$fdir);if($dir == $fdir){ echo "源檔案與現在檔案路徑衝突,換一個路徑吧"; exit;}$arr = array($dir,$fdir);ergodic($dir,$arr); // 遞迴的時候目錄名一直是改變的。所以用一個數組另外儲存兩個路徑,這樣建立檔案或者目錄的時候就可以找到在那個目錄下。md($fdir);function md($md){ // 建立目錄 if(!is_dir($md) && !empty($md) ){    mkdir($md,0777); }}// 遞迴function ergodic($dirname,$arr){  if(is_dir($dirname)){    $handle = opendir($dirname);    $a = $arr[1].substr($dirname,strlen($arr[0]) );    md($a);    while($filename = readdir($handle)){  // 讀取一個開啟的檔案名稱。      if($filename != '.' && $filename != '..'){        $dir = $dirname.'/'.$filename; // 拼接目錄名        if(is_dir($dir)){          ergodic($dir,$arr);  // 遞迴        }else{          file_put_contents($a.'/'.$filename,replace_php_src($dir) );          echo $dir."  去注釋壓縮完成!<br>";        }      }    }  }else{    // 此處無用(因為來的都是目錄),如果只轉換一個檔案,就可以這樣使用。   file_put_contents($arr[1].'/'.$dirname,replace_php_src($arr[0].'/'.$dirname) );  }}// 去除注釋並壓縮,heredoc存在的時候去注釋不壓縮。function replace_php_src($src){  $contents = file_get_contents($src);  $num = substr_count($contents,'<<<');  // heredoc 是否存在。  $str = "";  if($num > 0){  // heredoc 存在。只去除注釋不壓縮。      $file = token_get_all($contents); // token_get_all() 將提供的源碼按 PHP 標記進行分割.      for ($i=0; $i < count($file); $i++) {        if( is_string($file[$i]) ){          $str .= $file[$i];        }else{           $name = token_name( $file[$i][0] ); // token_name() 擷取提供的 PHP 解析器代號的符號名稱.            if($name == 'T_COMMENT' || $name == 'T_DOC_COMMENT' ){ // 去除注釋                continue;            }else{              $str .= $file[$i][1];            }        }      }  }else{    $str = php_strip_whitespace($src); // 不存在 heredoc 。因為他會錯誤解析。  }  return $str;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.