2009-06-13 7 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]# 

しかし、私は、それは単に「resume_Al_Kassar_9-29-08.doc.txt」だすべて奇妙^ファイル名でM

で^ Mを見ていない、「ファイル転送ウィンドウ」でそのディレクトリにブラウズ

これまでに誰もがこの問題に取り組んでいますか?これを解決する方法は?

この.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テキストファイルミスマッチがあります。 msdosは\ r \ n、unixのみ\ n、^ Mは\ r(カーラッジリターン)です。

+0

私の投稿を更新し、どのステップが^ Mマークを生成したかを伝えました。 – omg

+0

bashFileConvert関数のコードを表示する必要があります。これは余分な^ M文字を追加しています –

+0

私は多分その理由を見つけたと思います、私の更新を見てください。 – omg

1

これは間違いなく行末の問題です。たぶんあなたのPHP関数は\ nでテキストを分割していて、あなたの入力は実際には\ r \ nです。

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

ここで、$ dataは\ n改行のみを含むようにして、入力を1行の終了型に変換できます。

明確化後

編集は使用しないでください\ R \ nは、単に使用\ nと、すべてが問題ないはずです。

+0

投稿を更新して、^ Mマークを生成したステップを伝えました。 – omg

関連する問題