如何在PHP/HTML中保留空格格式?

33

我正在从文件中解析文本并将其存储在字符串中。问题在于,原始文件中的某些文本包含了ASCII艺术等内容,我希望保留它们。当我在HTML页面上打印字符串时,即使它与原始文件具有相同的格式和样式,由于在HTML中,间距和换行都不会被保留。那么,在HTML中精确地打印出原始文本文件的内容,最好的方法是什么?
我想举个例子,但很遗憾,我在这个markdown编辑器中无法正确显示它:P
基本上,我想知道如何在HTML中显示ASCII艺术的建议。

5个回答

60
使用 <pre> 标签(预格式化)可以保留所有的空格,并使用等宽字体(适用于你的艺术需求)。
<pre>
text goes here and here 
             and here and here            Some out here
     ▄             ▄█▄ █▄       ▄
 ▄█▀█▓ ▄▓▀▀█▀ ▀▀▀█▓▀▀ ▀▀    ▄█▀█▓▀▀▀▀▀▓▄▀██▀▀
██  ██ ▀██▄▄ ▄█  ▀ ░▒ ░▒   ██  ██ ▄█▄ █▀ ██
█▓▄▀██  ▄ ▀█▌▓█    ▒▓ ▒▓   █▓▄▀██ ▓█ ▀▄  █▓
█▒  █▓ ██▄▓▀ ▀█▄▄█▄▓█ ▓█   █▒  █▓ ▒█  ▓█▄ ▒
    ▀▒           ▀  ▀ █▀       ▀▒  ▀  █▀  ░

</pre>  

您可能需要将任何 < 转换为 &lt;


17

在文本框等场合,<pre></pre>可能并非最佳选择。

如果想要保留换行符-\n\n\r,请使用UnkwnTech和Brad Mace提到的nl2br函数。

如果想要保留空格,请使用str_replace

str_replace(' ', '&nbsp;', $stringVariable);

如果两者都需要,请使用以下代码:

$result = str_replace(' ', '&nbsp;', $stringVariable);
$result = nl2br($result);

警告,这会使某些单词断开。就像我有一些文本,单词“how”几乎被分成两行,就像h<br>ow,所以请务必彻底测试。 - Spencer Shattuck

6

如果您正在寻找保留从数据库获取的文本的方法,这个方法对我很有效,只需按照以下设置CSS:

pre {
     white-space: pre-line;
     text-align : left;
  }

在HTML中:

<pre >
     <?php echo htmlentities($yourText ) ; ?>
</pre>

6
当您打印数据时,请使用nl2br()\n\r\n转换为<br>

-2

只需在您的PHP代码中将必要的特殊字符(\s、\n或\r)与字符串一起回显即可。

<?php 

echo ("hello world \n")

?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接