Элегантное решение для разрывов строк (PHP)


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

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

Спасибо

Author: 3zzy, 2010-04-28

8 answers

Для разрывов строк, 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.

 41
Author: Pascal MARTIN, 2016-01-28 09:02:19

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

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

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

 6
Author: TheVyom, 2014-11-11 16:41:05

В разрывах строк php мы можем использовать PHP_EOL (КОНЕЦ СТРОКИ). он работает как "\n" , но его нельзя отобразить на странице ht ml. потому что мы должны дать разрыв HTML, чтобы разорвать строку..

Таким образом, вы можете использовать его с помощью define

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

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

 2
Author: Kolitha Warnakulasooriya, 2015-07-21 03:18:57

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

// 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)."</pre>"; }
  }
}


// Usage

out('Hello world!');

$var = 'Hello Stackoverflow!';
out($var, 'Label');
 1
Author: 3zzy, 2016-11-07 02:00:36

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

 0
Author: Sarfraz, 2010-04-28 04:48:02

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

Как упоминали предыдущие ответчики, "<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
Author: mkgrunder, 2010-04-28 04:58:29

Не очень "элегантно" и вроде как бесполезно, но если вам действительно важно, как выглядит код, вы могли бы создать свой собственный модный флаг, а затем сделать 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
Author: RandyMorris, 2017-02-02 15:52:19

\n у меня не получилось. \n отображается в тексте письма, которое я отправлял.. вот как я решил эту проблему.

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

 -1
Author: Hamish Ahern, 2013-03-05 22:20:34