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

laimas,
Добрый день!

Спасибо вам за помощь.

Всё утро корпел над функцией, которую вы мне посоветовали. В результате написал следующий продуманный код, посмотрите, пожалуйста:

// берём контент
$content = preg_replace_callback(

  // поочерёдно перебираем в нём все пустые строки в их окружении
  // и каждую строку проверяем на соответствие и выполняем с ней то, или иное действие
  "/[\s\S]*(^\s*$)[\s\S]*/miu",

  function( $match_before ) {

    // смотрим, если пустая строка внутри pre (записываем результат в переменную $match_after)
    if ( preg_match( "/\<pre\>[\s\S]*(^\s*$)[\s\S]*\<\/pre\>/miu", $content, $match_after ) ) {

      // и выводим вместо неё надпись, что мы внутри
      $content = preg_replace( $match_after[1], "<p>Это строка внутри pre</p>", $content );

    // в противном случае, мы берём строку, которую нашли в самом начале
    // и так как она не подошла под первое условие
    // с чистой совестью выводим вместо неё сообщение, что мы НЕ внутри
    } else {

      $content = preg_replace( $match_before[1], "<p>Это строка НЕ внутри pre</p>", $content );

    }

  },

  $content

);


Ведь алгоритм написан верно?
Ответить с цитированием