Вопрос по regex, tags, wrap, php – Обернуть текст в тег P

9

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

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

в это:

<p>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</p>

<p>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</p>

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

Вы парень из Коханы! Проверять, выписыватьсяtext::auto_p() :) alex
Я тогда не знал о Кохане! Спасибо хехе The Pixel Developer

Ваш Ответ

3   ответа
3

preg_replace внутри цикла по всем строкам ввода:

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

$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>";
Спасибо, это сработало отлично. У вас все же была ошибка, посмотрите мой код здесь.codepad.org/soU8q5lL The Pixel Developer
Ах да, я вижу. Исправлено, спасибо!
2
$str = '<p>'. str_replace('\n\n', '</p><p>', $str) .'</p>';

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

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

Спасибо, сэр, исправление, я тоже забыл порядок параметров.
Затем я сделал бы нечто подобное, используя только preg_replace и regex, чтобы получить 2+ \ n символов. Все зависит от того, насколько хорошо определена структура вашего ввода.
(При выполнении вышеупомянутой функции необходимо заменить на регулярное выражение, а не обычную замену строки.)
Когда я использую аналогично этому, я часто буду делать \ n \ n + или \ n {2,}, чтобы разрешить два или более символов новой строки, вместо того, чтобы требовать ровно две строки новой строки.
Опечатка: $ str = & lt; p & gt ;. str_replace ($ str, '\ n \ n' ;, '/ p; & lt; p & gt; ")". "/ p; g;;"; "

Похожие вопросы