使用 FTP 上传文件到服务器之后,每个文件内容都多了一个换行,此程序将多个换行替换成一个换行 使用前先测试。
header("Content-type: text/html; charset=utf-8");
/**
* 读取目录下的文件
* @author Xm
* @anotherdate 2018-04-18T10:26:54+0800
* @param string $base 扫描目录
* @param string $ext 扫描文件后缀名
* @return [type]
*/
function readDirs($base,$ext="*")
{
if(is_dir($base))
{
$basedir = empty($base) ? '.' : $base;
$source = opendir($basedir);
while($file_name = readdir($source))
{
if($file_name == "." || $file_name == "..") continue;
$file_path = $basedir."/".$file_name;
if(is_dir($file_path))
{
echo "读取目录".$file_path."
";
readDirs($file_path,$ext);
}else{
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
if($ext != "*" && $file_ext != $ext)
{
echo "文件 ".$file_path." 后缀名不一致,已忽略
";
continue;
}
echo "正在替换文件 ".$file_path." 中的多空格
";
removeBr2($file_path);
}
}
}
}
/**
* 正则匹配所有换行
* @author Xm
* @anotherdate 2018-04-18T10:27:47+0800
* @param [type] $file_path [description]
* @return [type] [description]
*/
function removeBr2($file_path)
{
if(file_exists($file_path)){
$fp = fopen($file_path,"r");
//指定读取大小,这里把整个文件内容读取出来
$len = filesize($file_path);
if($len <= 0 && $fp)
{
echo "文件 ".$file_path." 无法读取或内容为空
";
return;
}
$str = fread($fp,$len);
// 匹配所有换行,替换成一个换行
// $preg = "/(\r\n)+/";
$preg = "/(\r\n){1,}/";
// 正则
// preg_match_all($preg, $str, $a);
$str = preg_replace($preg,"\r\n",$str);
$fp = fopen($file_path,"w");
if($str != "")
fwrite($fp,$str);
fclose($fp);
}
}
$base = ".";
$ext = "php";
readDirs($base,$ext);
?>
或者使用编辑器正则匹配换行, 编辑器一键去除如sublime 跟 vscode CTRL+F 选择正则匹配
匹配两个换行以上
^\s*(?=\r?$)\n
或者一个换行就匹配
^(?=\r?$)\n