[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);
它应该是导致此问题的最后一行!
答案 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,一切都应该没问题。