2014-02-21 79 views
0

我正在嘗試更新目錄中所有html文件的公司地址的一部分。我試圖找出將新行插入文件的最佳方法。以下是我迄今得到的。用新文本將文本行寫入文件?

<?php 
$dir = new DirectoryIterator(dirname(__FILE__)); 
foreach ($dir as $fileinfo){ 
    foreach(glob($fileinfo.'/*.*') as $file) { 
     if(is_writable($file)){ 
      $file_parts = pathinfo($file); 

     switch($file_parts['extension']) 
     { 
      case "html": 
       $lines = file($file); 
       foreach ($lines as $line_num => $line) { 
        $newline = str_replace("Suite 425", "Suite 800", $line); 
        echo $newline; 
       } 
      break; 
     } 
     } 
    } 
} 
?> 
+0

爲什麼你需要做到這一點,你可以簡單地使用它的數據庫 –

+0

我老實說,只是使用'sed'這樣的東西。這是一個linux命令行'流式編輯器',它將根據正則表達式替換文本。 –

+0

我建議使用命令行工具,比如「find」和「sed」而不是PHP,如果你使用的是類Unix的shell。 –

回答

1

試試這個樣子,但它沒有經過測試,測試您嘗試上的所有文件之前,還是保持一個安全的備份:)

<?php 
$dir = new DirectoryIterator(dirname(__FILE__)); 
foreach ($dir as $fileinfo){ 
    foreach(glob($fileinfo.'/*.*') as $file) { 
     if(is_writable($file)){ 
      $file_parts = pathinfo($file); 

     switch($file_parts['extension']) 
     { 
      case "html": 
       $lines = file($file); 
       $to_write=''; 
       $file_modified=false; 
       foreach ($lines as $line_num => $line) { 
        $newline = str_replace("Suite 425", "Suite 800", $line); 
        $to_write.=$newline; 
        if($newline!=$line){ 
         $file_modified=true; 
        } 
       } 
       if($file_modified){ 
        $file_handle=fopen($file, 'w'); 
        fwrite($file_handle, $to_write); 
        fclose($file_handle); 
       } 
      break; 
     } 
     } 
    } 
} 
?> 
+0

感謝您申請的方向。我不熟悉從文件讀取和寫入。這不僅非常完美,而且給人以優異的視角。 –