2009-06-13 44 views
0
[[email protected] Engineer]# ls resume_Al_Kassar_9-29-08.doc.txt^M 
resume_Al_Kassar_9-29-08.doc.txt? 
[[email protected] Engineer]# 

但我瀏覽到的「文件傳輸窗口」該目錄中,並沒有看到^ M在所有奇怪的^ 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); 

這應該是造成這一問題的最後一行!

回答

3

在某些地方,您可能會在某處將「carrage return」字符添加到您的文件名中,可能是msdos/unix textfile mismatch。 msdos是\ r \ n並且只有unix \ n,^ M是\ r(carrage return)我相信。

+0

我更新了我的帖子,告訴哪一步生成了^ M標記。 – omg 2009-06-13 00:21:43

+0

您將需要顯示bashFileConvert函數的代碼 - 這是添加多餘的^ M字符 – 2009-06-13 00:30:02

1

這絕對是一個行結束的問題。很可能你的PHP函數將文本分割爲\ n,而你的輸入實際上是\ r \ n。您可以通過執行以下操作將輸入轉換爲一行結尾類型:

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

現在$數據將只包含\ n換行符。澄清

編輯不要使用\ r \ n,只需要使用\ n和一切都應該罰款。