正则匹配两个换行

使用 FTP 工具上传文件到服务器之后,发现每个文件内容全部都多了一个换行,每上传一次多一个换行、子子孙孙川流不息???

原来几百行的代码硬生生变成了几千号,如果多一行多一块钱那。。。算啦算啦

作为一个讲究的程序猿我一般使用正则替换已经被摧残的文件内容

我一般使用编辑器的正则替换功能,编辑器一键去除如sublime 跟 vscode  CTRL+H 选择正则匹配 下面是我常用的几个正则

匹配两个换行以上

^\s*(?=\r?$)\n

或者一个换行就匹配

^(?=\r?$)\n

或者,猛男程序员可以使用脚本一键去除,先备份在测试,不然有点危险

<?php 
header("Content-type: text/html; charset=utf-8");
/**
 * 读取目录下的文件
 * @author xiadmin
 * @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."<br>";
                readDirs($file_path,$ext);
            }else{
                $file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
                if($ext != "*" && $file_ext != $ext)
                {
                    echo "文件 ".$file_path." 后缀名不一致,已忽略<br>";
                    continue;
                }
                echo "正在替换文件 ".$file_path." 中的多空格<br>";
                removeBr2($file_path);
            }
        }

    }
}
/**
 * 正则匹配所有换行
 * @author xiadmin
 * @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." 无法读取或内容为空<br>";
            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);
?>

给TA支持
共{{data.count}}人
人已支持
运维随笔

Crontab 定时任务设置

2018-3-24 15:39:24

phpthinkphp

thinkphp5 session 无法写入

2018-4-24 10:32:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索