|
|
|
| Не знала куда примастить вопрос, создала новую тему.
Никак не пойму, есть или нет в php режим трансляции символа \n в перенос строки?
Где-то написано, что есть, по большей части все молчат, а при проверке вообще-то не работает. | |
|
|
|
|
|
|
|
для: KatyYOU
(22.08.2009 в 21:07)
| |
? | |
|
|
|
|
|
|
|
для: Fractured
(22.08.2009 в 21:16)
| | Мдя, я как-то невнятно спросила.
При открытии файла fopen($filename, $mode)
mode может быть там... r, w, и пр. А если в конце дописать еще t,
то есть "rt", то файл будет считываться, преобразовывая символы \n в переносы строки. У меня так не вышло. Вот в общем вопрос... | |
|
|
|
|
|
|
|
для: KatyYOU
(22.08.2009 в 21:25)
| | > А если в конце дописать еще t, то есть "rt", то файл будет считываться, преобразовывая символы \n в переносы строки.
Приложите файл, с которым "не вышло" | |
|
|
|
|
|
|
|
для: KatyYOU
(22.08.2009 в 21:07)
| |
<?php
header('content-type:text/plain');
echo <<<TXT
\n\n\r\n ${_ENV['PROCESSOR_ARCHITECTURE']}\r\n
TXT;
?>
|
| |
|
|
|
|
 228 байт |
|
|
для: heed
(22.08.2009 в 21:32)
| | Код:
Файл Main_text:
Первый абзац. \n Второй абзац \n Третий абзац. \n
<?
$file_name = 'Text/Main_text.txt';
$R = fopen($file_name, "rt");
$Text = fread($R, filesize($file_name));
fclose($R);
print($Text);
?>
|
| |
|
|
|
|
|
|
|
для: KatyYOU
(22.08.2009 в 21:51)
| | Насколько знаю такого нет ,
есть настройки позволяющие некоторым функциям правильно распознавать разные
переводы строк как \n или \r\n.или \r
и 't' поддерживается только в виндовс,
оно вроде влияет при записи файла как в него запишется \n
, рекомендуется мол записывать правильные для системы символы
, не проверял только
а так с помощью str_replace() например можно заменять , или preg_replace().
// но за 6й php не скажу | |
|
|
|
|
|
|
|
для: KatyYOU
(22.08.2009 в 21:51)
| | > Первый абзац. \n Второй абзац \n Третий абзац. \n
Вы не совсем правильно поняли смысл t. Перенос строки в *nix-системах задаётся с помощью байта 0x0A (10), а в windows-системах с помощью 2-х байт: 0x0D 0x0A. Просто обычно принятно обозначать эти байт как \r (0x0D) и \n (0x0A), так как они не являются "видимыми" символами.
Переводить последовательность их 2-х символов "\" и "n" в символ переноса строки оно не будет. | |
|
|
|
|
|
|
|
для: Fractured
(22.08.2009 в 22:22)
| | Читаю в руководстве по php4: "Дело в том, что в конце любой из
строк r, w, a, r+, w+ и a+ может находиться еще один необязательный символ — b
или t. Если указан b (или не указан вообще никакой), то файл открывается в режиме
бинарного чтения/записи. Если же это t, то для файла устанавливается режим транс-
ляции символа перевода строки, т. е. он воспринимается как текстовый. "
Если смысл я поняла не верно, и символ \n не транслируется в перенос строки, тогда какой смысл в t?
Или все эти приколы могут касаться только php4? У меня стоит 5.10. | |
|
|
|
|
 275 байт |
|
|
для: KatyYOU
(22.08.2009 в 23:02)
| | Попробую объяснить лучше.
В Windows перенос строки принято выражать 2-мя байтами: 0x0D 0x0A. В *nix-системах принято перенос строки выражать только одним байтом: 0x0A.
Они невидимые и поэтому показать их нельзя. Но можно увидеть разницу в Блокноте, который переваривает только windows-style переводы строк.
Я прикрепил архив с двумя файлами: "test_unix_style.txt", "text_windows_style".
В файле "test_unix_style.txt" где я записал переводы строк с помощью одного байта 0x0A (этот байт называют Line Feed, обозначают часто в стиле C как \n).Попробуйте открыть его Блокнотом. Вы поймёте, что Блокнот такие переводы строк не любит.
Второй файл содержит переводы строк в стиле windows и выражается уже двумя байтами (0x0D - Carriage Return и упомянутый 0x0A). Его Блокнот уже успешно открывает!
Так вот флаг "t" в сущности позволяет в системе Windows считывать/записывать файл с "правильным" переводом строк. То есть если написать типа такого:
<?php
$fp = fopen('test_unix_style.txt', 'r');
$s = '';
while( $b = fgets($fp) )
$s .= $b;
fclose($fp);
$fd = fopen('test_unix_style.txt', 'wt'); // Перезапишем с флагом "t"
fputs($fd, $s);
fclose($fd);
?>
|
и запустить на машие с windows, то мы "исправим" файл "test_unix_style.txt'" для чтения его в Блокноте.
Для Вашей же задачи по сути нужно применять str_replace().
P.S. Сравните размеры 2-х файлов. | |
|
|
|