$text = '
<div>
<p></p>
<p>Текст 1.1 <br> текст 1.2</p>
<p><div>Текст 2</div> <br /> что-то еще </p>
<p></p>
</div>
';
Текст 1.1<br>
текст 1.2<br>
Текст 2 <br>
что-то еще
$text = '
<div>
<p></p>
<p>Текст 1</p>
<p>Текст 2</p>
<p></p>
</div>
';
$text = strip_tags( $text, '<p><br>' ); // оставляем теги p, br
$text = preg_replace("~<p>(?-i:\\s++| )*</p>~i", "", $text); // удаляем все пустые теги p
$text = preg_replace( '/<\/p>[^<]{0,}<p>/ism', '<br>', $text); // заменяем
$text = strip_tags( $text, '<br>' ); // оставляем только переносы
echo $text;
sortedNodes = (data["SETTINGS"]["SORT"] == "DESC" ?
nodes.OrderByDescending( x => ( data["SETTINGS"]["TYPE"] == "CD" ? x.CreationDate : x.ModificationDate ) ) :
nodes.OrderBy( x => ( data["SETTINGS"]["TYPE"] == "CD" ? x.CreationDate : x.ModificationDate ) ) )
.ToArray();
Посмотрите второй код в первом примере
php.net/manual/ru/function.strip-tags.php