Как заменить вкладку на & nbsp; в PHP?

В моей базе данных у меня есть следующий текст:

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 ответа

Цитировать текст в двойных кавычках, вот так

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

PHP будет интерпретировать специальные символы в строках с двойными кавычками, в то время как в строках с одинарными кавычками он просто покинет строку, за исключением \',


Старый и устаревший ответ:

Скопируйте символ табуляции (" ") из блокнота, строки базы данных или этого сообщения и добавьте этот код:

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

(это не четыре пробела, это символ табуляции, который вы скопировали из блокнота)

Вам нужно разместить \t в двойных кавычках это должно быть интерпретировано как символ табуляции. Строки в одинарных кавычках не интерпретируются.

Всегда используйте двойные кавычки при использовании \t \n и т. д.

Это может быть сложно, потому что вкладки на самом деле не имеют фиксированного размера, и вам придется рассчитывать остановки вкладок. Это может быть проще, если вы печатаете пустое пространство как есть и поручаете браузеру отобразить его. Ты можешь использовать <pre> теги:

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

... или установить white-space CSS свойство:

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

(Как отмечают другие, '\t' отличается от "\t" в PHP.)

Другие вопросы по тегам