我正在用PHP编写脚本来更改HTML文件中的一些代码。每个文件将按行读取,因此每个操作必须按行。 我的问题是,如果某行操作是文件的末尾,则会丢失换行符。
为了清楚起见,我不想使用HTML换行符(<br />
)但我想要正常的换行符(\n
)来在代码编辑器中获得更好的格式化代码。 / p>
之前的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;
因此,只要添加换行符之后有什么东西,它就会起作用。是否可以在换行符后添加新内容使其正常工作?
答案 0 :(得分:1)
看看这个answer on SO
echo 'Hello, world!' . "\xA";
<强>更新强>
我尝试了你的代码,它需要一些额外的新行字符。 PHP_EOL
和\xA
工作正常。
请参阅此代码:http://ideone.com/ZQHTqj