html — строковые операции PHP теряют символы новой строки

Я пишу скрипт на PHP, чтобы изменить некоторые коды в файлах HTML. Каждый файл будет читаться в строке в строке и, следовательно, каждая операция должна быть в строке.
Моя проблема в том, что некоторые операции теряют символ перевода строки, если это конец файла.

Просто чтобы прояснить, я не хочу иметь символы новой строки HTML (<br />) но я хочу нормальных символов новой строки (\n) чтобы получить лучший форматированный код внутри редактора кода.

Пример HTML раньше:

<body>
<div id="wrapper">

Пример HTML после:

<body>
<div id="jobtempl"> <!-- jobtempl --><div id="wrapper">

Как это должно быть:

<body>
<div id="jobtempl"> <!-- jobtempl -->
<div id="wrapper">

PHP-код:

private function replaceContent($file) {
$this->file = $file;
$lines = file($this->file);

// some stuff to get $bodyStartLine as line number where to add the code

$handle = fopen($this->file, 'w');

foreach ($lines as $line) {
if ($i == $bodyStartLine) {
$line = $line . '<div id="jobtempl"> <!-- jobtempl -->';
}

if ($i == $bodyEndLine) {
$line = '</div> <!-- /jobtempl -->' . PHP_EOL . $line; // works
}

fwrite($handle, $line);
}

fclose($handle);
}

Даже если я использую $line = $line . '<div id="jobtempl"> <!-- jobtempl -->' . "\n"; заставить символ новой строки это не работает. То же самое с \r\n\ а также \r,

Что работает, когда я позже закрываю этот новый div:

$line = '</div> <!-- /jobtempl -->' . "\n" . $line;

Поэтому всякий раз, когда после символа новой строки нужно что-то добавить, это будет работать. Можно ли заставить его работать без добавления нового контента после символа новой строки?

1

Решение

Взгляни на это ответ на ТАК

echo 'Hello, world!' . "\xA";

ОБНОВИТЬ

Я попробовал ваш код, и ему нужны дополнительные символы новой строки. С PHP_EOL а также \xA работает отлично.

Смотрите этот код: http://ideone.com/ZQHTqj

1

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

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

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