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
);
Ведь алгоритм написан верно?