程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php批量替換內容或指定目錄下所有文件內容

php批量替換內容或指定目錄下所有文件內容

編輯:關於PHP編程

要替換字符串中的內容我們只要利用php相關函數,如strstr,str_replace,正則表達式了,那麼我們要替換目錄所有文件的內容就需要先遍歷目錄再打開文件再利用上面講的函數替換了。 先我們看最基本

strtr() 函數轉換字符串中特定的字符。

語法
strtr(string,from,to)或者

strtr(string,array)

*/

 代碼如下 復制代碼

$addr=strtr($addr,"","aao");        //第一種調用方法
$trans=array("hello"=>"hi","hi"=>"hello");      //定義一個轉換數組
echo strtr("hi all, i said hello",$trans);       //第二種調用方法


//普通字符串

echo strtr("hilla warld","ia","eo");

//數組

$arr = array("hello" => "hi", "world" => "earth");
echo strtr("hello world",$arr);

/*
如果 from 和 to 的長度不同,則格式化為最短的長度。

再看一個簡單的函數

// +------ 我以前寫的一個替換函數

 代碼如下 復制代碼

function file_modify($search_contents, $replace_contents, $filename)
{
        $fp = file_get_contents($filename);
        $new_fp = str_replace($search_contents, $replace_contents, $fp);
        file_put_contents($filename, $new_fp);
}

// +------ 用法
file_modify('sdf hjhj', 'sdf_test hjhj_test', 'test10.html');


或直接用

// 或者直接用這個

 代碼如下 復制代碼

preg_replace('|(<div class="body">)(^<]+)(</div>)|iSU', "${1}" . 替換後的內容 . "$3", $str);

 

preg_replace('|(<div class="body">)(^<]+)(</div>)|iSU', "${1}" . 替換後的內容 . "$3", $str);


上面我所說的所有問題都只會替換一個文件裡面的,那麼我想替換一個站點所有目錄裡面文件指定字符,那麼我們來看下面這個函數

 代碼如下 復制代碼 <?php    
if (isset($_GET['dir'])){ //設置文件目錄    
    $basedir=$_GET['dir'];    
}else{    
    $basedir = '.';    
}  
$auto = 1;    
checkdir($basedir);    
function checkdir($basedir){    
    if ($dh = opendir($basedir)) {    
        while (($file = readdir($dh)) !== false) {    
            if ($file != '.' && $file != '..'){    
                if (!is_dir($basedir."/".$file)) {    
                    echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";    
                }else{    
                    $dirname = $basedir."/".$file;    
                    checkdir($dirname);    
                }    
            }    
        }    
        closedir($dh);    
    }    
}    
function checkBOM ($filename) {    
    global $auto;    
    $contents = file_get_contents($filename);    
    $charset[1] = substr($contents, 0, 1);    
    $charset[2] = substr($contents, 1, 1);    
    $charset[3] = substr($contents, 2, 1);    
    if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {    
        if ($auto == 1) {    
            $rest = substr($contents, 3);    
            rewrite ($filename, $rest);    
            return ("<font color=red>BOM found, automatically removed._<a href=http://www.bKjia.c0m>http://www.hzhuti.com/nokia/c6/</a></font>");    
        } else {    
            return ("<font color=red>BOM found.</font>");    
        }    
    }    
    else return ("BOM Not Found.");    
}    
function rewrite ($filename, $data) {    
    $filenum = fopen($filename, "w");    
    flock($filenum, LOCK_EX);    
    fwrite($filenum, $data);    
    fclose($filenum);    
}    
?>  

這樣我們只要運行就可以替換指定目錄所所有文件的所有內容,這個還是特別方便的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved