Jump to content
  • 0

автоперенос строк


ZYX
 Share

Question

Подскажите пожалуйста как реализовать автоперенос строк выводимых по средствам php

например

echo 'один
два
три
';

будет выводится как

одиндватри

а нужно так

один
два
три

Нашёл способ через функцию nl2br() но меня почему то смущает такой перенос... Посмотрел на всех крупных сайтах перенос больших текстов осуществляется через параграфы (<p>) неужели все тексты редактируются вручную или есть какой то ещё способ? или ничего страшного нету в переносе с помощью nl2br()?

Ещё один вопрос как осуществить автозамену ссылок из вида http://www.site.ru/ в вид <a href="http://www.site.ru/">http://www.site.ru/</a> в больших текстах?

Edited by ZYX
Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

не понимаю проблемы... Ты с PHP как вообще? :)

попробуй посмотреть хотя бы функцию str_replace(). И кстати, если жать на "ентер", то строка делится этим: "\n" или "\r\n" (в зависимости от OC, если не ошибаюсь)

можно попробовать например так..


$text = '...............';
$result = '<p>' . str_replace(array("\n","\r\n"), "</p><p>", $text) . '</p>';
echo $result;

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0
Ещё один вопрос как осуществить автозамену ссылок из вида http://www.site.ru/ в вид <a href="http://www.site.ru/">http://www.site.ru/</a> в больших текстах?

например так можно попробовать

$a = "сайт http://www.ru - это суперсайт";
$b = preg_replace("#(http://www.ru)#", '<a href="\\1">\\1</a>', $a);
echo $b;

Link to comment
Share on other sites

  • 0
по средствам
Да сколько же можно-то!!!!! По каким таким ещё средствам?!?!?!? ПОСРЕДСТВОМ! ПОСРЕДСТВОМ! Вы ПОСРЕДСТВЕННО владеете русским языком.

Правильно написали: хочешь параграфами - делай замену \n. Это если действительно новый параграф начался.

  • Like 1
Link to comment
Share on other sites

  • 0

ну да, ну да... :) каждому своё, но я люблю Strict и XML правила.. Но хотя спецификация HTML5 пишет определённые условия для этого:

A p element's end tag may be omitted if the p element is immediately followed by an address, article, aside, blockquote, dir, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, menu, nav, ol, p, pre, section, table, or ul, element, or if there is no more content in the parent element and the parent element is not an a element.

И на сколько я понял английский, Гугля тоже советует, но с осторожностью. :)

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0
Чтобы оптимизировать размер файла и облегчить разбор, рассмотрите возможность опустить необязательные теги. Спецификация HTML5 определяет, какие теги можно опускать.

(Этот подход может потребовать "переходного периода", чтобы стать более общей рекомендацией, поскольку он существенно отличается от того, чему обычно учат веб-разработчиков. Целям единообразия и простоты лучше всего отвечает опускание всех необязательных тегов, не только выборочных.)

Кстати, Strict — это не про синтаксис, а про набор тегов/атрибутов (HTML 4.xx тоже бывает Strict). А плюсы от XML-синтаксиса проявляются лишь при XML-разборе, для HTML-парсера он, наоборот, источник возможной неоднозначности...

Link to comment
Share on other sites

  • 0
Кстати, Strict — это не про синтаксис, а про набор тегов/атрибутов (HTML 4.xx тоже бывает Strict).
NS о чём? :) 4.xx и бывает Strict. и это в том числе и синтаксис.. и валидатор потребует закрыть тег
для HTML-парсера он, наоборот, источник возможной неоднозначности...
Не буду спорить, но что-то такое первый раз слышу :) Наоборот порядка больше когда открывается и закрывается...

Ну да ладно, это тема другого вопроса.. ;)

Link to comment
Share on other sites

  • 0
4.xx и бывает Strict. и это в том числе и синтаксис.. и валидатор потребует закрыть тег

Проверьте на validator.w3.org вот такое:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<title>HTML 4.01 Strict!</title>
<p>свободу содержимому тегов!

Link to comment
Share on other sites

  • 0

Ну по постановке задачи понятно же, что проблема на самом деле в HTML при white-space: normal :). А исходник... да кто вообще в него смотрит, в исходник тот... кроме PHP-программиста, разве что? :)

Link to comment
Share on other sites

  • 0

Ух какой хиливар начался :D

Спасибо всем,думаю буду использовать nl2br() самый простой вариант...

например так можно попробовать

$a = "сайт http://www.ru - это суперсайт";
$b = preg_replace("#(http://www.ru)#", '<a href="\\1">\\1</a>', $a);
echo $b;

Спасибо! Только названия не фиксированые, я совсем ламер в регулярных выражениях, как преобразовать паттерн чтобы брался текст от http:// до первого пробела?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy