Есть ли способ заставить новую строку после закрывающего тега php?> При внедрении в HTML? - PullRequest
15 голосов
/ 15 декабря 2009

Я с небольшим успехом искал в Интернете способ заставить php выводить новую строку после закрывающего тега php ?>, чтобы мой HTML отображался так, как я его вижу, до того, как он был проанализирован PHP, чтобы он выглядел аккуратно и аккуратно при просмотре исходного кода html для страницы.

Я хочу, чтобы он не удалял новую строку и не приводил к переносу следующей строки и, следовательно, к разрушению формата страницы. Есть ли конкретный параметр php.ini, который можно изменить, чтобы отключить это поведение?

У всех моих файлов логики кода ?> удалены с конца, поэтому мне не нужно беспокоиться о том, чтобы они добавляли дополнительные символы новой строки, поэтому я считаю, что PHP был закодирован для удаления завершающих строк.

Ответы [ 7 ]

15 голосов
/ 15 декабря 2009

Ричард говорит это:

Hello <? ?>
Jello

... после разбора PHP становится так:

 Hello Jello


Я просто добавляю дополнительный символ новой строки вручную, например:

Hello <? ?>

Jello

... давая это:

Hello
Jello
8 голосов
/ 28 июля 2013

Это старый вопрос, но чтобы сохранить новую строку, просто поставьте пробел после закрывающего тега.

Источник: http://php.net/manual/en/language.basic-syntax.instruction-separation.php

1 голос
/ 16 мая 2013

Нет способа изменить это поведение. Чтобы было ясно, что происходит, я всегда явно помещаю символ новой строки в мои файлы шаблонов.

Hello,    

Foo: <?php echo $foo."\n"; ?>
Bar: <?php echo $foo."\n"; ?>

This concludes foo and bar.

Выходы:

Hello,    

Foo: foo
Bar: bar

This concludes foo and bar.
1 голос
/ 15 декабря 2009

Вы можете попробовать это:

echo "output \n";

или даже эта гораздо менее изящная техника:

echo "output
";

Пожалуйста, вставьте пример кода, чтобы получить более конкретную помощь.

0 голосов
/ 14 мая 2013

Мои навязчивые привычки сводят меня к подобным целям. К сожалению, нет элегантного решения для этого. Два предложения:

  1. Выведите символ новой строки, где вы хотите разбить код HTML следующим образом:

    echo 'Hello World'.chr(10);

  2. PHP-команда 'echo' не является реальной функцией, поэтому вы не можете ее переопределить; тем не менее, вы можете создать оболочку и использовать ее вместо этого:

    function myecho($string, $newline=true)
    {
       echo $string;
       if($newline)
          echo chr(10);
    }
    

Ни одно из решений не является элегантным, но, опять же, ни HTML-вывод не выводится, если вы не добавляете разрывы строк.

0 голосов
/ 08 февраля 2010

Не всегда можно просто запустить элемент уровня блока после тега php.

Иногда вы создаете простой текст внутри текстовой области.

В других случаях вы вообще не генерируете строки HTML.

  • оператор SQL
  • тело письма
  • другие не-HTML строки
0 голосов
/ 15 декабря 2009

Если это вызывает у вас проблемы, скорее всего, вы не пишете хороший HTML. Если у вас PHP отделен от HTML, то после тега ?> close начните с элемента HTML уровня блока.

Как это:

Hello <?php $php_code(); ?> <div>Something else here</div> or even <p>Something else here</p>

Что бы вывести:

Hello

Something else here

Если вместо этого вы пишете:

Hello <?php $php_code(); ?> Something else here

Тогда ваша проблема в том, как вы пишете HTML, а не в разборе PHP.

...