weranda
@weranda

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

Приветствую.
В общем, есть HTML-код. Для примера можно взять любой HTML.
<h1></h1>
<p></p>
<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>
<blockquote></blockquote>
<pre class="prettyprint">
    <span class="pun"></span>
    <span class="pln"></span>
</pre>
<p></p>
<p></p>

Этот HTML нужно сжать в строку, но только не то, что внутри блока prettyprint. Должно получиться так:
<h1></h1><p></p><ul><li></li><li></li><li></li></ul><blockquote></blockquote><pre class="prettyprint">
    <span class="pun"></span>
    <span class="pln"></span></pre><p></p><p></p>

Сейчас я это делаю регулярками:
preg_replace('|\s+|', ' ', $content);
preg_replace('|\>\s+\<|', '><', $content);

Не пойму как сделать так, чтобы не брать в расчет код внутри блока prettyprint. Как?
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Находите в полном тексте блок с prettyprint - получаете 3 куска текста: до блока/сам блок/после блока.
Форматируете первый и третий куски, склеиваете обратно.
Если несколько блоков в тексте - разбиваете всё на N кусков...

Ну или второй вариант, попроще - вырезаете все блоки, заменяя их каким-нибудь уникальным placeholder-ом типа , чистите оставшееся, возвращаете блоки обратно, placeholder-ы у вас есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы