如何用PHP替换tab?

时间:2011-01-18 09:52:14

标签: php html str-replace nl2br

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

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 个答案:

答案 0 :(得分:10)

您需要将\t放在双引号中,以便将其解释为制表符。单引号字符串不会被解释。

答案 1 :(得分:7)

用双引号引用文本,例如

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

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


旧的并且已弃用的答案:

从记事本,数据库字符串或此帖子中复制制表符(“”),然后添加以下代码:

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

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

答案 2 :(得分:3)

在使用\ t \ n等

时始终使用双引号

答案 3 :(得分:3)

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

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

...或设置white-space CSS属性:

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

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