2010-11-22 3 views
0

Это моя полная веб-страница, с помощью php-кода взята из here. Но весь текст на странице отображается на одной строке?Новые строки не работают в PHP?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 
<body> 

<?php 

echo "This spans 
multiple lines. The newlines will be 
output as well"; 

echo "This spans\nmultiple lines. The newlines will be\noutput as well."; 

?> 

</body> 
</html> 

ответ

2

HTML не поддерживает символы перевода строки, поэтому вы должны использовать <br>.

Вы можете использовать nl2br, который преобразует все ваши \n в вашу строку, до <br>, которая будет генерировать желаемый результат.

+0

@ Anthony-
работает, но я все еще озадачен тем, почему регулярные \ n новые строки не будут, учитывая, что это прямо из документов? – Yarin

+0

@ Ярин. См. Наши другие ответы для более четкого объяснения. – BoltClock

+0

Эта ссылка, на которую ссылается im: http: //php.net/manual/en/function.echo.php – Yarin

1

HTML объединит последовательные пробелы (в большинстве контекстов) с одним символом пробела. Вам нужно будет вывести параграфы (<p>...</p>) или другие теги с рамкой или дополнением или вывести явные разрывы строк (<br>).

3

Новые строки содержатся в вашем исходном коде. Браузеры, однако, не будут переносить новые строки как разрывы строк на вашей странице, поэтому вам нужно использовать теги разрыва строки (<br />).

+0

плюс один Болти! – alex

1

Новые строки действительно печатаются, но HTML не интересует пробелы (если вы явно не указали это, посмотрите на элемент pre и white-space: pre).

Браузеры по существу превратят все \s в одно место при просмотре HTML.

1

О, новые линии там, и они работают. Возьмите gander в HTML источник (т. Е. Когда вы щелкните правой кнопкой мыши в браузере и выберите View Page Source), а не результаты, отображаемые в браузере. Вы увидите новые линии там.

Проблема в том, что сам HTML не заботится о том, как вы форматируете свое свободное пространство. Для HTML все пустое пространство, будь то табуляция, новая строка или целый беспорядок пространства, переводится как одно пространство.

Чтобы получить HTML-код для отображения разрывов строк, вам нужно будет использовать теги HTML, такие как <pre>, <p>, или <br/>.

Мне легче в PHP-программах создать мою собственную функцию echoLine, которая добавляется как в \n, так и в <br/>. Таким образом, я вижу это как в источнике веб-страницы, так и в HTML-дисплее.

+0

хороший совет- спасибо – Yarin

Смежные вопросы