PHP:避免在编写文件时为多行字符串自动添加断行

时间:2018-05-18 16:11:37

标签: php html

我有一个系统在插入一些文章信息后生成一个新的.html文件。但是,有一个 Textarea 来输入一些HTML格式代码。当然,String中有很多新行。我需要将该HTML代码写入 .html 文件。 我的代码是这个

$my_file = 'index.html';
$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file);
$data = '<h6>
          Hello!,World
        </h6>';
fwrite($handle, $data);

实际上我从$data获得TEXTAREA。希望那里没有太大的区别

我需要文件内容在我的.html文件中

<h6>Hello!,World</h6>

但我得到这样的东西

<h6>\r\n  Hello!,World\r\n</h6>

有人可以解释如何阻止PHP的自动添加Breaklines系统

编辑:很好,还没有得到确切答案!但是,希望这样说。当我们写一个HTML代码时,有很多换行符,空格等...就像这样。

 <div class="post-content">
      <h6>
         Hello!,Yellow
      </h6>
      <!-- Post Tags -->
 </div> 

所以当这个代码输入到文本区域并被写入文件时不需要像

<div class="post-content">\r\n<h6>\r\n  Hello!,Yellow\r\n</h6>\r\n<!-- Post Tags -->\r\n</div>

RIGHT!我不知道这是否是我的代码中的错误,但我只需要知道是否有一种方法来阻止文件是这样的。 此外,当TEXTAREA内容插入MySQL数据库时,它看起来非常好像这样

<div class="post-content">
      <h6>
         Hello!,Yellow
      </h6>
      <!-- Post Tags -->
 </div> 

3 个答案:

答案 0 :(得分:0)

这不是“自动添加Breaklines系统”,您使用push看到的是回车符和传递字符串中的新行的直观表示。

您可以使用str_replace\r\n替换为\r\n。或者,您可以使用花哨的preg_replace''\s+替换为\r\n

答案 1 :(得分:0)

您可以使用str_replace()这种方式使用简单空格替换$data变量中的所有这些换行命令:

$to_be_replaced = array("\r\n", "\n", "\r");
$replacement = array(" ", " ", " ");

$data_changed = str_replace($to_be_replaced, $replacement, $data);

评论后补充:

如果您希望保留在文本区域字段中写入的换行符和空格,则可以使用<br>标记替换换行符命令以保持换行符。

使用空格更有问题,因为HTML会将所有多个空格合并到一个空格中。但是你可以尝试用“”代替“”(即空格)(即一个非破坏空间的HTML实体,它也会在彼此之后被多次接受。

那样的代码就是

$to_be_replaced = array("\r\n", "\n", "\r", " ");
$replacement = array("<br>", "<br>", "<br>", "&nbsp;");
$data_changed = str_replace($to_be_replaced, $replacement, $data);

如果你不使用等宽字体,这看起来与textarea完全不同(因为不同字体的字符将具有不同的宽度),但它应该接近。

答案 2 :(得分:0)

(代表作者提问)

解决!我发现它不是由PHP发生,而是由mysqli_real_escape_string()函数发生。所以我找到了解决问题的方法。