Eine recht häufige Aufgabe, eine Lösung hatte aber trotzdem nicht in der Schublade liegen, und Google brachte auf Anhieb auch keine brauchbaren Treffer.
Deshalb hier nochmal, quasi als Merkzettel für mich, eine PHP-Funktion, die rekursiv einen Ordner durchwandert und in allen Dateien Text sucht und ersetzt.
// This function searches and replaces text in textfiles in a given directory recursively function searchReplace($dirName, $search, $replace, $fileExtensions = NULL) { if (!is_dir($dirName)) { return; } $dh = opendir($dirName); while (($filename = readdir($dh)) !== false) { if ($filename != '.' && $filename != '..') { if (is_dir($dirName.$filename)) { searchReplace($dirName.$filename.'/', $search, $replace, $fileExtensions); } else { $fileExtension = substr($filename, strrpos($filename, '.')); if (!is_null($fileExtensions) && !in_array($fileExtension, $fileExtensions)) { continue; } $buffer = ''; $fh = fopen($dirName.$filename, 'r'); while (!feof($fh)) { $buffer .= fgets($fh); } fclose($fh); // for more sophisticated search & replace you might prefer regular expressions and preg_replace $buffer = str_replace($search, $replace, $buffer); $fh = fopen($dirName.$filename, 'w'); fwrite($fh, $buffer); fclose($fh); } } } closedir($dh); } // usage: $dirName = '/path/to/my/directory/'; $search = 'foo'; $replace = 'bar'; // arrays can also be used for replacing several strings at a time: // $search = array('foo1', 'foo2'); // $replace = array('bar1', 'bar2'); $fileExtensions = array('.php', '.html', '.htm'); // set to NULL for search and replace in any file searchReplace($dirName, $search, $replace, $fileExtensions);