Есть функция: Код (PHP): function nl2p($string) { $s = ("|\r\n|"); $d = ("</p>\n<p>"); $string = "<p>". preg_replace($s, $d, $string) ."</p>"; $string = str_replace('<p></p>', '', $string); return $string; } Каждый перенос строки она переделывает в новый абзац, т.е. помещает фрагмент текста в теги <p></p> Допустим я ввёл текст: Код (PHP): Бла бла бла и бла бла бла. Тум пурум пурум пурум. Ля ля ля. Результатом будет: Код (PHP): <p>Бла бла бла и бла бла бла.</p> <p>Тум пурум пурум пурум.</p> <p>Ля ля ля.</p> В отличие от функции "nl2br" которая создаёт тупо однии <br>, эта функция делает контент более статейным разделяя его как и положено на абзацы. Но есть проблема. Допустим я хочу чтобы не все новые строчки переделывались в абзацы, чтобы когда два переноса - был обзац, а когда один перенос - был <br>. Т.е. если я ввожу вот так (один перенос): Код (PHP): Бла бла бла и бла бла бла. Тум пурум пурум пурум. Ля ля ля. То эта фунция всё равно мне всё оформит в теги <p></p>: Код (PHP): <p>Бла бла бла и бла бла бла.</p> <p>Тум пурум пурум пурум.</p> <p>Ля ля ля.</p> А мне нужно чтобы это было как положено, т.е. вот так: Код (PHP): <p>Бла бла бла и бла бла бла.<br> Тум пурум пурум пурум.<br> Ля ля ля.</p> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Код (PHP): $string = '<p>'.str_replace("\n\n", '</p><p>', $string).'</p>'; $string = str_replace("\n", '<br>', $string);
Re: Не могу додалать функцию. igordata, благодарю! Просто спас. Добавлено спустя 7 минут 51 секунду: Всё же не работает ещё до конца правильно. Выводит вот это: Код (Text): <p>Стихи поздравления с днём рождения. День рождения — необычный праздник! В этот день на именинника просто льется дождь из подарков, приятных встреч, звонков с поздравлениями и пожеланиями. Как поздравить с днем рождения? Только в стихах! Ведь такие поздравления являются наиболее удачным способом выразить виновнику торжества свои чувства и от души высказать все свои пожелания. <br> <br>С днем рождения поздравляю <br>И хочу тебе сказать, <br>Что всего-всего желаю: <br>Никогда не унывать, <br></p> Т.е. обзац образуется, но только один. Добавлено спустя 55 секунд: Один абзац <p> вначале и в конце и всё.
Re: Не могу додалать функцию. Код (Text): $string = '<p>'.str_replace(PHP_EOL . PHP_EOL, '</p><p>', $string).'</p>'; $string = str_replace(PHP_EOL, '<br>', $string); Добавлено спустя 2 минуты 7 секунд: Код (Text): $string = '<p>'.str_replace(["\r\n\r\n", "\n\n", "\r\r"], '</p><p>', $string).'</p>'; $string = str_replace(["\r\n", "\n", "\r"], '<br>', $string);
Re: Не могу додалать функцию. значит там не "\n\n", а именно "\r\n" или "\n\r" это тоже можно заменой привести к одному виду.
Re: Не могу додалать функцию. Будет зависить от ОС пользователя, который вводит текст. Двойной перевод строки \r\n\r\n на винде, \n\n будет на линуксе, \r\r на старых MacOS, а \n\r вообше не используется.
Re: Не могу додалать функцию. У меня Виндовс. igordata пробовал в коде менять "\n\n", на "\r\n" и "\n\r" - не помогло. при варианте "\n\r" вставляет br но прямо вместе с <p> одновременно. [vs] Первый когд тоже не работает. А этот выводит ошибку: Код (Text): $string = '<p>'.str_replace(["\r\n\r\n", "\n\n", "\r\r"], '</p><p>', $string).'</p>'; $string = str_replace(["\r\n", "\n", "\r"], '<br>', $string); Где-то здесь ошибка.
Re: Не могу доделать функцию. http://phpfaq.ru/debug скорее всего старая версия PHP. Вместо квадратных скобок используй array() или обнови php.
Re: Не могу доделать функцию. Поставил Код (Text): ini_set('display_errors',1); error_reporting(E_ALL); Но всё равно ошибка пустое окно. PHP 5.3
Re: Не могу доделать функцию. ну я же говорю - старая. Тогда еще нельзя было объявлять массив квадратными скобками, так что это синтаксическая ошибка, а синтаксические ошибки выбрасываются до начала выполнения скрипта, поэтому изменение вывода ошибок в самом скрипте не влияет на их видимость.
Re: Не могу доделать функцию. Включил 5.6 у хостера. Ошибку не выдаёт, но скрипт создания статей перестал напрочь работать. Пришлось вернуться снова к 5.3. Даже протестить на смог. А как с array записать?
Re: Не могу доделать функцию. Econaft тебе [vs] дал ссылку, как найти ошибку, как минимум включить их отображение.