奇怪^ M在文件名

时间:2009-06-13 00:14:03

标签: php

[root@file Engineer]# ls resume_Al_Kassar_9-29-08.doc.txt^M 
resume_Al_Kassar_9-29-08.doc.txt?
[root@file Engineer]# 

但是我通过“文件传输窗口”浏览到该目录,没有看到^ M

它只是“resume_Al_Kassar_9-29-08.doc.txt”

任何人都会涉及这个问题?如何解决这个问题?

这个.txt ^ M文件是由另一个程序生成的,由“bashFileConvert”函数处理(它是一个PHP函数)。

$toF = bashFileConvert($toF);//this step generated ^M
$cmd = "$parser $file $arrow_str $toF";

我怎样摆脱这个恼人的^ M?

后来我发现:

$arrow_str = $arrow ? '>' : '';
$file = bashFileConvert($file);
$toF = bashFileConvert($toF);
$cmd = "$parser $file $arrow_str $toF";
echo $cmd . "\r\n";
file_put_contents('resumeSh',$cmd."\r\n",FILE_APPEND);

它应该是导致此问题的最后一行!

2 个答案:

答案 0 :(得分:3)

你的文件名中添加了'回车'字符的某些地方可能是msdos / unix文本文件在某处不匹配。 msdos是\ r \ n和unix只有\ n,^ M是\ r(carrage return)我相信。

答案 1 :(得分:1)

这绝对是一个行结尾问题。很可能你的PHP函数是用\ n分割文本,你的输入实际上是\ r \ n。您可以通过执行以下操作将输入转换为一行结束类型:

$data = str_replace("\r\n", "\n", $data);
$data = str_replace("\r", "\n", $data);

现在$ data只包含\ n换行符。

澄清后编辑

不要使用\ r \ n,只需使用\ n,一切都应该没问题。