使用PHP我正在使用.htaccess
将内容写入fwrite
文件,这一切都正常但是当我在Vim中查看.htaccess
之后它会在结尾处显示^ M已添加的每一行。这似乎没有引起任何问题,但我不确定是否会发生这种情况以及是否可以预防?
这是PHP:
$replaceWith = "#SO redirect_301\n".trim($_POST['redirect_301'])."\n#EO redirect_301";
$filename = SITE_ROOT.'/public_html/.htaccess';
$handle = fopen($filename,'r');
$contents = fread($handle, filesize($filename));
fclose($handle);
if (preg_match('/#SO redirect_301(.*?)#EO redirect_301/si', $contents, $regs)){
$result = $regs[0];
}
$newcontents = str_replace($result,$replaceWith,$contents);
$filename = SITE_ROOT.'/public_html/.htaccess';
$handle = fopen($filename,'w');
if (fwrite($handle, $newcontents) === FALSE) {
}
fclose($handle);
当我在Vim登记后,我会看到这样的事情:
#SO redirect_301
Redirect 301 /from1 http://www.domain.com/to1^M
Redirect 301 /from2 http://www.domain.com/to2^M
Redirect 301 /from3 http://www.domain.com/to3
#EO redirect_301
服务器正在运行CentOS,我在Mac上本地工作
答案 0 :(得分:3)
您的换行符为\r\n
,而不是\n
。
在写入文件之前,您应该替换无效输入:
$input = trim($_POST['redirect_301']);
$input = preg_replace('/\r\n/', "\n", $input); // DOS style newlines
$input = preg_replace('/\r/', "\n", $input); // Mac newlines for nostalgia