Intereting Posts
PHP Преобразование GMT ​​в IST как получить дату от Excel с помощью библиотеки PHPExcel Относительные URL-адреса с .htaccess Как определить размер изображения без его загрузки (в полном объеме)? Как разобрать GCM, чтобы удалить неверный идентификатор регистрации с сервера с помощью php отправка сообщения из приложения iOS в php-скрипт не работает … Простое решение похоже Аргумент 3, переданный в GuzzleHttp \ Client :: request (), должен быть из массива типов, строка задана Как написать пару ключевых значений в массиве в другом php-файле Получение jQuery autocomplete для работы с источником PHP Вызов неопределенной функции __ () error – phpMyAdmin проблема с формированием числа в php и ajax Ошибка: вид для AppController :: index () не найден как сделать символ «&» внутри значения в URL? Количество коротких сообщений WordPress, количество раз используемых в сообщении Удаление последней запятой из цикла foreach

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

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

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

благодаря

Для строк, 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() , которая вставляет перед \n .

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

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

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

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

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

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

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

Я закончил тем, что написал функцию, которая до сих пор работала для меня:

 // 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'); 

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

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

Как уже отмечали предыдущие ответчики, « <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 вне кода, он сделает вещи намного более гибкими и удобными в долгосрочной перспективе.

Не очень «изящный» и вроде бы пустой, но если вам действительно нравится, как выглядит код, вы можете сделать свой собственный фэнтезийный флаг, а затем сделать 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 /> 

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

\ n не работает для меня. \ n появляется в телетексте письма, которое я отправлял. Вот как я его разрешил.

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