Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 空格不';是否在nl2br(htmlentities($text))之后?_Php - Fatal编程技术网

Php 空格不';是否在nl2br(htmlentities($text))之后?

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(

我正在打印一篇文章,文章中有空格。 文章中的文本也有HTML标记,所以我在echo之前使用了htmlentities

但问题是,显示器不会在浏览器上显示空格。 这些命令有什么问题

有人能给我推荐一个更好的选择吗

数据库更新命令:

 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('  ', ' &nbsp;', 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>