Показать сообщение отдельно
  #11 (permalink)  
Старый 11.10.2016, 13:01
Аспирант
Отправить личное сообщение для snovapavel Посмотреть профиль Найти все сообщения от snovapavel
 
Регистрация: 08.03.2015
Сообщений: 78

laimas,

Да, не работает...

Ваша функция работает отлично, но, я как понял, мы вначале расставляем тег br везде, а потом вырезаем их из тега pre?

Я это реализовал ещё месяц назад, таким образом:

// Расставляем в конце каждой строки тег <br>
$content = preg_replace( '/\r?\n/miu', "<br>\r\n", $content );

// Убираем все теги <br>, которые идут после открывающего тега <div>
$content = preg_replace( '/((\<div[^\>]*?\>)<br>)/miu', "$2", $content );

// Убираем все теги <br>, которые идут после тега <hr>
$content = preg_replace( '/((\<hr[^\>]*?\>)\<br\>)/miu', "$2", $content );

// Убираем все теги <br>, которые находятся внутри контейнера <pre>...</pre>
$content = preg_replace_callback(

  '/\<pre[^\>]*?\>([\s\S]*?)\<\/pre\>/miu',

  function( $matches ) {
    return preg_replace( '/\<br\>/miu', '', $matches[0] );
  },

  $content

);

// Если пустых строк с тегом <br>, больше чем 1 подряд, убираем лишние и оставляем только одну
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );
$content = preg_replace( '/(^\<br\>\r?\n^\<br\>\r?\n)/miu', "<br>\r\n", $content );


Кстати, оцените эту красоту.

Просто уже месяц я думаю над вопросом, как сделать аналог как в CSS .content :not(pre):not(div) на PHP.

Эта всё, чтобы сделать автоматически расстановку параграфов в контенте, понимаете? Ведь WordPress как-то расставляет их сам. Вот я и пишу лёгкий и простой аналог парсера для людей. Совершенно бесплатно.
Ответить с цитированием