PHP字符串操作丢失换行符

时间:2014-10-08 13:58:52

标签: php html newline

我正在用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;

因此,只要添加换行符之后有什么东西,它就会起作用。是否可以在换行符后添加新内容使其正常工作?

1 个答案:

答案 0 :(得分:1)

看看这个answer on SO

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

<强>更新

我尝试了你的代码,它需要一些额外的新行字符。 PHP_EOL\xA工作正常。

请参阅此代码:http://ideone.com/ZQHTqj