PHP批量删除空行|wordpress迁移的艰辛
博客这些天一直处于死亡状态,昨天空间商帮忙把博客从浙江机房搬到河南机房了,暂时可以开通了。
Warning: Cannot modify header information – headers already sent by (output started at /*****/wp-includes/compat.php:230
头部有输出,昨天加班到比较晚,回家看《花木兰》,没去管博客,今天来公司,发现问题严重了,Google竟然抓取了页面

打开这些PHP的文件,发现下面全部都多了两行,就是php闭合标签之后多出了两个空行,造成在include 或是 require 后会有输出。
开始以为是只有几个文件是这样的,多打开几个发现,整个空间里面的php文件js,css,php都多出了两个空行,估计是华夏名网的在线文件管理器打包造成的。
因为本人对正则不熟悉,不过其实用正则替换倒不是太难,关键问题在于windows和linux下面的换行,回车符号的区别,费了不少时间研究。
虽然我知道windows下面是rn linux下面是n 可是我用rn在windows系统上怎么也匹配不了,后来才发现我用的eclipse里面的我用的是Unix格式,换行就是n,而不是rn,功夫不负苦心人哈,把代码贴出,也可以下载,有什么更好的方法,记得告诉我哈,各位!
//$path=__DIR__;//php 5.3
$path=dirname(__FILE__);
function get_all_files($path,$pattern='/php$|js$|css$/i'){
$list = array();
foreach( glob( $path.DIRECTORY_SEPARATOR.'*') as $item ){
if( is_dir( $item ) ){
$list = array_merge( $list , get_all_files( $item,$pattern ) );
}
else{
if(preg_match($pattern,$item)){
$list[] = $item;
}
}
}
return $list;
}
$list=get_all_files($path,'/php$/i');
foreach($list as $v){
$str=file_get_contents($v);
//var_dump($str);
$str=preg_replace("/?>s*$/i",'?>',$str);
//var_dump($str);
file_put_contents($v,$str);
}
header('Content-Type:text/html;Charset=utf-8');
echo "删除空白完成,Have a good time!";
echo "回首页";
点这里下载文件
解压后放到空间的根目录下面,会遍历所有子目录,并删除末尾的空行。










空行应该是编码格式的问题,看看这儿
http://shuair.cn/archives/php-require-extra-line/
并不是这样的,所有的php,js,css,html文件结尾都多出两个空行,你要是用dw,或是editplus这样手工的去除空行,会手抽筋还搞不完的,整个wordpress都是这样,只有段程序来搞了
看样子你学的不错,加油!