Задать вопрос

Как регулярным выражением заменить везде кроме содержимого между тегами?

Добрый день, никак не могу додумать регулярное выражение, которое исключает из поиска содержимое между двумя тегами.

Существует некий файл с текстом, в котором нужно удалить лишние переносы строк кроме текста, который заключен в теги <text></text>.

<?
$content = '
String 1

String 2

<tag1>

Tag str 1

Tag str 2

</tag2>

<text>

Text

Text 2

Text 3


</text>

';
echo trim(preg_replace('/[\r\n]+/imu', "\n", $content));


В результате должно получиться:
String 1
String 2
<tag1>
Tag str 1
Tag str 2
</tag2>
<text>

Text

Text 2

Text 3


</text>


Как правильно добавить исключение замены переноса для содержимого между тегами text?
  • Вопрос задан
  • 622 просмотра
Подписаться 1 Простой Комментировать
Ответ пользователя Dimonchik К ответам на вопрос (3)
dimonchik2013
@dimonchik2013
non progredi est regredi
чоткие пацанчики делают это через DOM дерево

но ты можешь методом "разрезать - склеить":
читаешь,
тексттест заносишь в переменную $THE_TEXT,
в текст вместо нее - рандомстринг,
убираешь переносы в тексте,
заменяшь рандомстринг на значение переменной $THE_TEXT
записываешь

а играть в регекспы тебе рановато, но выражение есть, да
Ответ написан
Комментировать