1.背景

某目录下很多文档,要批量替换某些字符串。

2.方案

先遍历所有文档,确定要修改文档的后缀,再替换字符串,下例也可用正则替换。

$path='/var/www/golang';
$search='test string';
$replace='';
$num=0;
if($handle = opendir($path)){
while(false !== $file=readdir($handle)){
if($file !='.' && $file !='..'){
if(is_dir($path.'/'.$file)){
file_list($path.'/'.$file);
}else{
if(preg_match ("/.html$/",$file)){//file type
file_content_replace($path.'/'.$file, $search, $replace);
echo ++$num.'.'.$file;
}else
echo $file.'-no file type-';
}//is_dir
}//file
}//withle
closedir($handle);
}//handle
function file_content_replace($filename, $search, $replace){
$string = file_get_contents($filename);
$new_string = str_replace($search, $replace, $string,$i);
//echo 'result:'.$i;
if($string !=$new_string) file_put_contents($filename, $new_string);
}//file-

3.备注

因为要写入内容,所以要确定文件、文件夹的权限,str_replace替换功能较弱,若是大段落替换,效果不佳。