странный ^ M в имени файла - PullRequest
0 голосов
/ 13 июня 2009
[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 ]

3 голосов
/ 13 июня 2009

В некоторых случаях, когда к имени файла добавляется символ возврата каретки, это может быть где-то несоответствие текстового файла msdos / unix. msdos - это \ r \ n и только unix \ n, ^ M - это \ r (возврат каретки), я верю.

1 голос
/ 13 июня 2009

Это определенно проблема с окончанием строки. Скорее всего, ваша PHP-функция разделяет текст на \ n, а на самом деле вы вводите \ r \ n. Вы можете преобразовать свой ввод в один тип окончания строки, выполнив что-то вроде:

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

Теперь $ data будет содержать только \ n разрывы строк.

Редактировать после уточнения

Не используйте \ r \ n, просто используйте \ n, и все должно быть хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...