Php 空格不';是否在nl2br(htmlentities($text))之后?
我正在打印一篇文章,文章中有空格。 文章中的文本也有HTML标记,所以我在echo之前使用了htmlentities 但问题是,显示器不会在浏览器上显示空格。 这些命令有什么问题 有人能给我推荐一个更好的选择吗 数据库更新命令:Php 空格不';是否在nl2br(htmlentities($text))之后?,php,Php,我正在打印一篇文章,文章中有空格。 文章中的文本也有HTML标记,所以我在echo之前使用了htmlentities 但问题是,显示器不会在浏览器上显示空格。 这些命令有什么问题 有人能给我推荐一个更好的选择吗 数据库更新命令: mysql_real_escape_string($text, $db) <pre><?php echo htmlentities($row_page['text']); ?></pre> 物品展示命令: echo nl2br(
mysql_real_escape_string($text, $db)
<pre><?php echo htmlentities($row_page['text']); ?></pre>
物品展示命令:
echo nl2br(htmlentities($row_page['text']));
示例:显示的文本非常难看
真实文本和我期望的一样:
dbus-1/ libcom_err.so.2@ libglib-2.0.so.0@ liblvm2cmd.so.2.02* libpopt.so.0.0.0*
device-mapper/ libcom_err.so.2.1* libglib-2.0.so.0.2200.5* libm-2.12.so* libproc-3.2.8.so*
firmware/ libcrypt-2.12.so* libgmodule-2.0.so.0@
HTML将所有空白(空格、换行符或制表符)压缩为一个空格。您可以通过将
'
替换为'
来解决此问题,例如:
echo str_replace(' ', ' ', nl2br(htmlentities($row_page['text'])));
但更干净的方法是让浏览器使用pre
格式空白:
或者,也可以使用CSS来增加灵活性:
<p>
Some very long text nicely indented and readable in source,
so it's easy to write for the author.
</p>
预格式化的空白有一些缺点,例如,当您使用
Pre
时,HTML文件中不能有任何换行或缩进,因为浏览器将呈现它们。但是,当你真的需要控制如何呈现某些内容时,它是最好的选择。浏览器将连续的空白压缩到单个空间中。这就是它的工作方式,主要是为了让您可以像这样编写源代码:
有些很长的文本缩进得很好,在源代码中可读,
因此,为作者写作很容易。
它将在如下浏览器中很好地显示:
有些很长的文本在源代码中缩进得很好,可读性很强,因此作者很容易编写
要使用预先格式化的文本,请将该部分包装在
标记中,或使用等效的CSS规则空白:pre
。当然,转义HTML的方式让这变得相当困难。像这样的标记语言可能就是解决方案。“空格”?你是说“新线”吗?另外,请显示原始文本、实际结果和预期结果。htmlspecialchars()
即可,无需htmllenties()
。关于空格,你能举个例子吗?您知道多个空格在HTML中显示为一个吗?您在这里遇到的问题与您的站点上的问题相同:浏览器折叠空白。为什么它折叠空白?有营救吗?
<p>
Some very long text nicely indented and readable in source,
so it's easy to write for the author.
</p>