6

在我的数据库中,我有以下文本:

for x in values:
   print x

我想在我的 HTML 页面上打印此代码。它由 PHP 按原样打印到 HTML 文件中。但是当浏览器显示 HTML 时,我当然看不到这种形式的文本。我看到以下内容:

for x in values: print x

我部分解决了这个问题nl2br,我也使用str_replace(' ','&nbsp',$str). 结果我得到:

for x in values:
print x

但我仍然需要print x向右移动。我以为我可以通过str_replace('\t','   ',$str). 但我发现str_replace打印前的空格不能识别为'\ t'。这个空间也不被认为只是一个空间。换句话说,我 print.

为什么?以及如何解决问题?

4

4 回答 4

10

您需要\t用双引号将其解释为制表符。不解释单引号字符串。

于 2011-01-18T09:58:45.133 回答
10

用双引号引用文本,像这样

str_replace("\t", '    ', $str);

PHP 将解释双引号字符串中的特殊字符,而在单引号字符串中,它只会留下字符串,唯一的例外是\'.


旧的和已弃用的答案:

从记事本、数据库字符串或这篇文章中复制制表符 (" "),然后添加以下代码:

str_replace('   ','    ',$str);

(这不是四个空格,它是您从记事本复制的制表符)

于 2011-01-18T09:59:21.080 回答
3

使用 \t \n 等时始终使用双引号

于 2011-01-18T09:59:17.170 回答
3

这可能很棘手,因为制表符实际上没有固定大小,您必须计算制表位。如果您按原样打印空格并指示浏览器显示它会更简单。您可以使用<pre>标签:

<pre>for x in values:
   print x</pre>

...或设置white-spaceCSS 属性:

div.code{
    white-space: pre-wrap
}

(正如其他人所指出的,与 PHP'\t'不同"\t"。)

于 2011-01-18T10:05:24.680 回答