Элегантное решение для переносов строк (PHP) - PullRequest
26 голосов
/ 28 апреля 2010
$var = "Hi there"."<br/>"."Welcome to my website"."<br/>;"
echo $var;

Есть ли элегантный способ обработки разрывов строк в PHP? Я не уверен насчет других языков, но в C ++ есть eol, поэтому что-то более удобочитаемое и элегантное в использовании?

Спасибо

Ответы [ 8 ]

44 голосов
/ 28 апреля 2010

Для перевода строки: PHP как "\n" (см. двойные кавычки ) и PHP_EOL.

Здесь вы используете <br />, который не является переводом строки в PHP: это перевод строки в HTML.


Здесь вы можете упростить то, что вы опубликовали (с разрывами строк HTML) : нет необходимости в конкатенации строк: вы можете поместить все в одну строку, например:

$var = "Hi there<br/>Welcome to my website<br/>";

Или, используя переводы строки PHP:

$var = "Hi there\nWelcome to my website\n";

Примечание: вы также можете взглянуть на функцию nl2br(), которая вставляет <br> перед \n.

6 голосов
/ 15 мая 2013

Я определил это:

if (PHP_SAPI === 'cli')
{
   define( "LNBR", PHP_EOL);
}
else
{
   define( "LNBR", "<BR/>");
}

После этого используйте LNBR везде, где я хочу использовать \n.

2 голосов
/ 07 ноября 2016

В итоге я написал функцию, которая до сих пор хорошо работала для меня:

<code>// pretty print data
function out($data, $label = NULL) {

  $CLI = (php_sapi_name() === 'cli') ? 'cli' : '';

  $gettype = gettype($data);

  if (isset($label)) {
    if ($CLI) { $label = $label . ': '; }
    else { $label = '<b>'.$label.'</b>: '; }
  }

  if ($gettype == 'string' || $gettype == 'integer' || $gettype == 'double' || $gettype == 'boolean') {
    if ($CLI) { echo $label . $data . "\n"; }
    else { echo $label . $data . "<br/>"; }
  }
  else {
    if ($CLI) { echo $label . print_r($data,1) . "\n"; } 
    else { echo $label . "<pre>".print_r($data,1)."
";} } } // Использование out («Привет, мир!»); $ var = 'Hello Stackoverflow!'; out ($ var, 'Label');
2 голосов
/ 21 июля 2015

в переводах строк php мы можем использовать PHP_EOL (END of LINE) .it работает как "\ n" но это не может быть показано на странице ht ml. потому что мы должны дать HTML разрыв, чтобы разбить строку ..

, чтобы вы могли использовать его, используя define

define ("EOL","<br>");

тогда вы можете назвать это

1 голос
/ 28 апреля 2010

Не очень "изящно" и немного напрасно, но если вы действительно заботитесь о том, как выглядит код, вы можете сделать свой собственный причудливый флаг и затем сделать str_replace.

Example:<br />
$myoutput =  "After this sentence there is a line break.<b>.|..</b> Here is a new line.";<br />
$myoutput =  str_replace(".|..","&lt;br />",$myoutput);<br />

или

how about:<br />
$myoutput =  "After this sentence there is a line break.<b>E(*)3</b> Here is a new line.";<br />
$myoutput =  str_replace("E(*)3","&lt;br />",$myoutput);<br />

Первый метод я называю «стиль среднего пальца», а второй - «стиль козла».

0 голосов
/ 06 марта 2013

\ n не работает для меня.\ n появляются в тексте сообщения электронной почты, которое я отправлял ... вот как я решил это.

str_pad ($ input, 990);// чтобы пробелы были заполнены до отрезания 990.

0 голосов
/ 28 апреля 2010

Ну, как и на любом языке, есть несколько способов сделать это.

Как отмечали предыдущие авторы, "<br/>" - это не перевод строки в традиционном смысле, это разрыв строки HTML. Я не знаю встроенной константы PHP для этого, но вы всегда можете определить свою собственную:

// Something like this, but call it whatever you like
const HTML_LINEBREAK = "<br/>";

Если вы выводите набор строк (например, из массива строк), вы можете использовать его следующим образом:

// Output an array of strings
$myStrings = Array('Line1','Line2','Line3');
echo implode(HTML_LINEBREAK,$myStrings);

Однако, вообще говоря, я бы сказал, что следует избегать жесткого кодирования HTML внутри операторов PHP echo / print. Если вы можете оставить HTML-код вне кода, это сделает его гораздо более гибким и поддерживаемым в долгосрочной перспективе.

0 голосов
/ 28 апреля 2010

Поскольку вы выводите в браузер, вы должны использовать <br/>. В противном случае \n и \r или оба вместе.

...