Я пишу скрипт на 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;
Поэтому всякий раз, когда после символа новой строки нужно что-то добавить, это будет работать. Можно ли заставить его работать без добавления нового контента после символа новой строки?
Взгляни на это ответ на ТАК
echo 'Hello, world!' . "\xA";
ОБНОВИТЬ
Я попробовал ваш код, и ему нужны дополнительные символы новой строки. С PHP_EOL
а также \xA
работает отлично.
Смотрите этот код: http://ideone.com/ZQHTqj
Других решений пока нет …