Перенести текст в тег P

Я пытаюсь понять, как обернуть текст следующим образом:

Morbi Nisl Tortor, Conctetur Vitae Laoreet EU, Lobortis ID ipsum. Integer scelerisque blandit pulvinar. Nam tempus mi eget nunc laoreet venenatis. Proin viverra, erat at accumsan tincidunt, ante mi cursus elit, non

congue mauris dolor ac elit. Maecenas mollis nisl a semper ornare. Целое число nunc purus, dapibus nec dignissim sed, dictum eget leo. Etiam in mi ut erat pretium fringilla sed

В это:

‹P› Морби нисл мучитель, освящение жизни лаорет ес, лобортис ид ipsum. Integer scelerisque blandit pulvinar. Nam tempus mi eget nunc laoreet venenatis. Proin viverra, erat at accumsan tincidunt, ante mi cursus elit, non ‹/p›

‹P› congue mauris dolor ac elit. Maecenas mollis nisl a semper ornare. Целое число nunc purus, dapibus nec dignissim sed, dictum eget leo. Etiam in mi ut erat pretium fringilla sed ‹/p›

Обратите внимание на теги p вокруг текста.


person The Pixel Developer    schedule 24.06.2009    source источник
comment
Ты парень из Коханы! Зацени text::auto_p() :)   -  person alex    schedule 29.10.2010


Ответы (3)


Это должно сделать это

$text = <<<TEXT
Morbi nisl tortor, consectetur vitae laoreet eu, lobortis id ipsum. Integer scelerisque blandit pulvinar. Nam tempus mi eget nunc laoreet venenatis. Proin viverra, erat at accumsan tincidunt, ante mi cursus elit, non

congue mauris dolor ac elit. Maecenas mollis nisl a sem semper ornare. Integer nunc purus, dapibus nec dignissim sed, dictum eget leo. Etiam in mi ut erat pretium fringilla sed
TEXT;

$paragraphedText = "<p>" . implode( "</p>\n\n<p>", preg_split( '/\n(?:\s*\n)+/', $text ) ) . "</p>";
person Peter Bailey    schedule 24.06.2009

Используйте preg_replace в цикле по всем строкам вашего ввода:

$replacement = preg_replace("/(.*)/", "<p>$1</p>", $current_line);
person Jeremy Smyth    schedule 24.06.2009
comment
Это будет работать, поскольку по умолчанию расширение. исключает новые строки. Конечно, предполагается, что внутри контента не происходит «жесткой упаковки». - person Peter Boughton; 25.06.2009

$str = '<p>'. str_replace('\n\n', '</p><p>', $str) .'</p>';

OR

$str = '<p>'. preg_replace('\n{2,}', '</p><p>', $str) .'</p>';

Чтобы поймать 2 и более.

person Matthew Vines    schedule 24.06.2009
comment
Опечатка: $ str = '‹p›'. str_replace ($ str, '\ n \ n', '‹/p› ‹p›'). '‹/p›'; - person racerror; 25.06.2009
comment
Когда я использую подобное, я часто использую \ n \ n + или \ n {2,}, чтобы разрешить два или более символов новой строки, вместо того, чтобы требовать ровно два символа новой строки. - person Peter Boughton; 25.06.2009
comment
(Если вы сделаете это выше, функцию нужно будет заменить на регулярное выражение, а не на замену обычной строки.) - person Peter Boughton; 25.06.2009
comment
Тогда я бы сделал что-то подобное, только используя preg_replace и regex, чтобы получить 2+ \ n символов. Все зависит от того, насколько четко определена структура вашего ввода. - person Matthew Vines; 25.06.2009
comment
Я не могу заставить его работать с моим текстом, см. Здесь: codepad.org/M5mRl8jE. Мне нужно обернуть каждый бит текста. Спасибо - person The Pixel Developer; 25.06.2009
comment
str_replace будет слишком глупым, чтобы подобрать для вас правильное соответствие. Проверьте мой ответ ниже. - person Peter Bailey; 25.06.2009