Я действительно не понимаю: какова цель нового персонажа?
Если я это сделаю:
<?php echo "This is a test. \n"; echo "This is another test."; ?>
Код приводит к тому, что оба предложения находятся в одной строке. Почему \ n не вызывает второе предложение во второй строке?
Приговоры – это каждая в своей строке, если я это делаю:
<?php echo "This is a test. <br>"; echo "This is another test."; ?>
Но я также видел, как люди это делают:
<?php echo "This is a test. <br>\n"; echo "This is another test."; ?>
Что по сути приводит к тому же выводу, что и второй фрагмент кода. Кто-то должен это объяснить?
Стандарт HTML рассматривает разрыв строки как просто еще один символ пробела, поэтому тег типа существует. Однако обратите внимание, что разрыв строки будет работать в <pre>
или в элементе с стилем white-space: pre CSS.
Третий пример – просто сделать «красивый» HTML: он упрощает «просмотр источника» и проверяет его на глаз. В противном случае у вас есть длинная строка HTML.
как вы заметили, существуют различные способы создания новой строки.
<br />
это не новый символ линии, это тег XHTML, который означает, что он работает в XHTML. правильно говоря, это не новый символ линии, но тег гарантирует, что один вставлен = он заставляет разрывать линию. закрывающий тег является обязательным.
Спецификации XHTML
<br>
это HTML-тег, который заставляет прерывать строку. закрывающий тег запрещен.
Спецификации HTML 4.1
\n
является escape-последовательностью для новой строки LSC линии LSC. Общей проблемой является использование «\ n» при общении с использованием интернет-протокола, который предусматривает использование ASCII CR + LF для завершения строк. Запись «\ n» в поток текстового режима корректно работает в системах Windows, но производит только LF в Unix и что-то совершенно другое в более экзотических системах. Использование «\ r \ n» в двоичном режиме немного лучше, поскольку оно работает на многих ASCII-совместимых системах, но в общем случае все еще не работает. Один из подходов – использовать двоичный режим и непосредственно указывать числовые значения управляющей последовательности «\ x0D \ x0A».
прочитайте больше
является новой константой строки php, которая заменяется на правильную зависящую от системы новую строку.
поэтому сообщение есть, используйте все в нужном месте.
<br>
даст вам новую строку в представлении пользователя; \n
даст вам новую строку в исходном коде, т. е. взгляд разработчика.
Когда html отображается, только « <br />
» отображает линию прерывания. Однако разметку гораздо легче читать, когда печатается « <br />\n
», так что все не в одной длинной строке.
\n
– это код
<br />
основан на HTML-тегах
Между ними существует четкое различие.
Ваша проблема заключается в способе рендеринга html. Если вы посмотрите в исходном коде, первый пример будет иметь две строки в отдельных строках, но браузер не видит разрывов строк в качестве разрывов, которые должны отображаться. Это позволяет вам иметь длинный абзац в вашем источнике:
rghruio grgo rhgior hiorghrg hg rgui ghergh ugi rguihg rug hughuigharug hruauruig huilugil guiui rui ghruf hf uhrguihgui rhguibuihfioefhw8u beruvbweuilweru gwui rgior
Это можно было бы обернуть только в том случае, когда браузеру понадобилось это сделать, что позволило бы легко редактировать его на нужной длине, но отображалось с любым разрешением.
HTML не заботится о новых строках в исходном коде, вы можете поместить все это в одну строку. Это будет интерпретировать только как новую строку. Вы должны использовать \ n, чтобы украсить свой HTML-вывод, но лучший способ – не выводить его с PHP, а использовать его в самом HTML и вставлять в него только PHP-материал, например:
<ul id="menu"> <?php foreach ($menu_items as $item): ?> <li> <a href="<?= htmlspecialchars($item['link']) ?>" title="<?= htmlspecialchars($item['title']) ?>"> <?= htmlspecialchars($item['title']) ?> </a> </li> <?php endforeach; ?> </ul>
Таким образом, вам не придется беспокоиться о форматировании внутри PHP, но вы автоматически его, по дизайну, в HTML. Кроме того, вы разделяете модель-логику и представление-логику друг от друга, как это, и оставляете вывод на свой HTTP-сервер, а не на PHP-движок.
Это связано с тем, что вы создаете HTML и просматриваете его в браузере, а там более или менее игнорируются пробелы. Десять пробелов не создают большего пробела, чем одно пространство, но это не означает, что пробельный символ не работает. Попробуйте установить тип содержимого в text/plain
или посмотреть источник HTML, чтобы увидеть эффект новой строки.
Правильный синтаксис XHTML для него был бы
echo "This is the test code <br />\n";
<br />
отображает новую строку на экране, «\ n» отображает новую строку в исходном коду
Новый символ строки полезен иначе, например, в формате PDF. Вы правы, что новый символ линии очень мало что делает с HTML, как говорили другие люди, он рассматривается как другой, а косвенный символ. Хотя это полезно в <pre>
. Он также может использоваться для форматирования вывода HTML, чтобы упростить его чтение. (Это немного раздражает, чтобы попытаться найти фрагмент HTML в строке шириной 1000 символов.)
Новый символ строки также полезен при хранении данных в базе данных. Обычно вы хотите хранить данные без специальных символов HTML, таких как <br />
чтобы их можно было легко использовать в других форматах (опять же, например, в формате PDF). На выходе вы хотите использовать nl2br()
для преобразования новых строк в <br />
s.
Новый строковый символ полезен для строковых функций.
Например:
explode( '\n' , $input );
Разделил бы строку новой строкой.
str_replace( '\n' , '<br />' , $input );
Замените каждую новую строку в $ input тегом br.
Кроме того, поскольку PHP также имеет CLI, \ n полезна для форматирования:
например.
echo 'Hello world';
Будет ли в CLI выводиться;
Hello worldphp>
echo 'Hello world' . "\n";
будет выводиться;
Привет мир
PHP>
Имейте в виду, что при написании веб-скриптов он также имеет смысл использовать PHP, это больше, чем веб-движок; он также имеет CLI, где тег br бесполезен.
<br />
также бесполезно, если вы запускаете скрипт из командной строки.
$ php -f file.php Output <br />$
Я знаю, что не слишком много людей используют PHP из командной строки, но это происходит:
file.php:
<?php print "Output\n"; ?>
В командной строке:
$ php -f file.php Output $