2013-07-30 2 views
0

Когда я пытаюсь создать файл, я не могу сделать новую строку/возврат каретки. Почему это не работает? Я попытался с:Новая строка ine create file

  • PHP_EOL
  • \n

Но это не создает новые линии, когда я смотрю его с помощью блокнота

<?php 

$file = 'myText.txt'; 

$id = '1'.$file; 
//explode($delimiter, $id); 

$content = "<PMTags1.0 win>". PHP_EOL; 
$content .= . PHP_EOL; 

while($row = mysqli_fetch_array($result)) 
{ 
    $content .= "<@win:><\<>win>". $row['kategoria'] . PHP_EOL; 
    $content .= "<@tekst:><\<>tekst><$>"; 
    $content .= $row['text']; 
    $content .= $gcid.$row['id'].'/'. PHP_EOL; 
} 

utf8_encode($content); 
echo $content; 
//Stworzenie pliku 
$fp = fopen(trim(trim($id)),"wb"); 

fwrite($fp,$content); 
fwrite($fp, pack("CCC",0xef,0xbb,0xbf)); 
fopen(trim(trim($id)),"r"); 
fclose($fp); 
//End 4 
//5 - Otwarcie pliku 



if (file_exists(trim($id))) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename(trim($id))); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize(trim($id))); 
    ob_clean(); 
    flush(); 
    readfile(trim($id)); 
    exit; 
} 
+1

Блокнот не показывает '\ n' вам, это невидимая инструкция. – Prix

+5

Попробуйте Блокнот ++. Это гораздо лучше. –

+2

Если вы создаете файл на сервере, который использует концы строк * nix ("\ n"), но отображается в блокноте Windows, который требует окончания строки Windows ("\ r \ n"), тогда все будет выглядеть так, как будто это одна строка - либо откройте файл в Notepad ++, либо редактор, который может читать файлы с окончанием строки * nix или использовать «\ r \ n» –

ответ

1

Для систем Linux символ новой строки является \n

Для систем Mac \r достаточно (спасибо SIT_LCU).

Для Windows вы должны добавить \r рядом с \n

+0

На самом деле, некоторые системы Mac полагаются только на '\ r'. ссылка: http://en.wikipedia.org/wiki/Crlf#Representations –

0

PHP_EOL является "правильным 'End Of Line' символ для этой платформы."

Но, вероятно, вы создаете файл в Unix и смотрите на него под Windows - где EOL -символ отличается.

+0

Да serwer находится в unix, и я открываю файл на окнах – user33913

+0

Как и другие, хороший редактор поможет. [Notepad ++] (http://notepad-plus-plus.org/) или [UltraEdit] (http://www.ultraedit.com/) (мой любимый) будет доступен ... – MBaas

1

Не используйте PHP_EOL для вывода в текстовый файл, вы можете лучше использовать:

\n\r 

Для лучшей совместимости

0

\ п = CR (возврат каретки) // Используется в качестве новой строки символ в Unix
\ г = LF (Line Feed) // Используется в качестве новой строки в Mac OS
\ г \ п = CR + LF // Используется в качестве новой строки в ОС Windows
NewLine

\ n правильно представлен в некоторых браузерах и инструментах,
, но для получения правильных результатов для всех пользователей лучше всего использовать «\ r \ n» для новой строки.