我有一个系统在插入一些文章信息后生成一个新的.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>
答案 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>", " ");
$data_changed = str_replace($to_be_replaced, $replacement, $data);
如果你不使用等宽字体,这看起来与textarea完全不同(因为不同字体的字符将具有不同的宽度),但它应该接近。
答案 2 :(得分:0)
(代表作者提问)。
解决!我发现它不是由PHP发生,而是由mysqli_real_escape_string()
函数发生。所以我找到了解决问题的方法。