почему PHP_EOL записывает \ r \ n в конце каждой строки

Я боролся с символом новой строки PHP. Я согласен со следующими фактами, что PHP_EOL предоставляет нейтральную платформу новой строки (\ r, \ r \ n, \ n на основе ОС), и мы можем использовать это в наших интересах.

Я делаю простой PHP File Read и Write в моей Mac OS (Yosemite), используя XAMPP.

Ниже приведен мой код для записи в файл.

$handle = fopen("test.txt", "a+");

$data = "Hello World." . PHP_EOL;

fwrite($handle, $data);

Вывод в файл дается следующим образом.

Hello World.\r\n

Примечание: я проверил это как с fwrite (), так и с file_get_contents (). Нет никакой разницы.

Мой вопрос: Записывая в файл через write с помощью PHP_EOL, почему он записывает \ r \ n в конце строки?

У меня нет проблем при вставке новой строки (разрыв строки HTML) путем вызова nl2br () функция. Однако из-за этого символа мой вывод HTML имеет эти символы \ r \ n !!!

Я играл с множеством различных альтернатив, как показано ниже

$line = str_replace("\r\n","<br/>",$line); // Does NOT work!
$line = preg_replace('~\r?\n~','<br/>', $line); // Works as that of nl2blr()!
$line = str_replace(PHP_EOL, "<br/>",$line); // Works as that of nl2br()!

Опции выше вставляют разрыв строки HTML, но ничто не удаляет это ‘\ r \ n’ из фактического текста!

Я проверил, введя несколько строк вручную (очевидно, нет \ r \ n), и этот метод чтения отлично работает без \ r \ n. Поэтому я пришел к выводу, что виновником может быть {PHP_EOL + метод записи файла}!

Я действительно смущен тем, что мне не хватает?

Любая помощь будет высоко оценен.

Заранее спасибо.

-1

Решение

Без двойных кавычек PHP не обрабатывает специальный символ и должен заменить, как вы ожидаете.

$line = str_replace('\r\n',"<br/>",$line); // note '\r\n' not "\r\n"

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]