1. 程式人生 > >無限遞歸替換文件內的某個字符串

無限遞歸替換文件內的某個字符串

location app for ide tde let ray oct fopen

// 把這兩個文件放到一個文件夾,然後放到要更改的文件根目錄。

像這樣:

技術分享圖片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SearchMatchStr</title>
</head>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
<body>
<div id="container"
> <form action="searchReplaceStr.php" method="post" @submit="onSubmit"> <input type="text" name="target" v-model="target"> <span style="color:red;">替換為</span> <input type="text" name="strReplace" v-model="strReplace"> <button
>Submit!</button> </form> </div> </body> <script type="text/javascript"> var app = new Vue({ el: #container, data: { target: null, strReplace: null, }, methods: { onSubmit: function (e) {
if (this.target && this.strReplace) { return true; } e.preventDefault(); } }, }) </script> </html>

// php腳本文件

<?php
class searchReplaceStr{
    private $search = null;
    private $matchStr = null;
    public function __construct ($search, $matchStr) {
        if ($search == null || $matchStr == null) {
            return false;
        }
        $this->search = $search;
        $this->matchStr = $matchStr;
    }
    private function modifyFile ($filename) {
        $fileHandler = fopen($filename, ‘r+‘);
        $modify = ‘‘;
        while (!feof($fileHandler)) {
            $source = fgets($fileHandler);
            $modify .= str_replace($this->search, $this->matchStr, $source);
        }
        if (!@unlink($filename)) {
            echo "delete file " . $filename . " success<br>";
        }
        $newFileHandler = fopen($filename, ‘w‘);
        if (!feof($newFileHandler)) {
            fwrite($newFileHandler, $modify);
        }
        if (file_exists($filename)) {
            echo "create file " . $filename . " success<br>";
        }
    }
    public function sourceDir($dir) {
        $files = array();
        if ($dir != ".idea" && $dir != ‘serchReplaceStr‘) {
            if(@$handle = opendir($dir)) {
                while(($file = readdir($handle)) !== false) {
                    if($file != ".." && $file != "." && $file != "searchReplaceStr.php" && $file != ‘index.html‘) {
                        if(is_dir($dir."/".$file)) {
                            $files[$file] = $this->sourceDir($dir."/".$file);
                        } else {
                            $this->modifyFile($dir . "/" .$file);
                        }
                    }
                }
            }
        }
    }
}
if (!is_null($_POST)) {
    $searchReplaceStr = new searchReplaceStr($_POST[‘target‘], $_POST[‘strReplace‘]);
    print_r($searchReplaceStr->sourceDir(‘../‘));
} else {
    echo "<script>
            alert(‘Please input value‘);
            location.href = ‘./index.html‘;
          </script>";
}

無限遞歸替換文件內的某個字符串