PHP - Строки - Удаляют HTML-тэг с определенным классом, включая его содержание

У меня есть строка как это:

<div class="container">
  <h3 class="hdr"> Text </h3>
  <div class="main">
    text
    <h3> text... </h3>
    ....

  </div>
</div>

как я удаляю тег H3 с .hdr классом с помощью как можно меньше кода?

9
задан Alex 30 June 2010 в 13:28
поделиться

3 ответа

Как можно использовать в качестве маленький код? Самый короткий код - не обязательно лучший. Однако, если ваш тег HTML h3 всегда выглядит так, этого должно быть достаточно:

$html = preg_replace('#<h3 class="hdr">(.*?)</h3>#', '', $html);

Вообще говоря, использование регулярного выражения для синтаксического анализа HTML не является особенно хорошей идеей.

20
ответ дан 4 December 2019 в 08:50
поделиться

Это примерно то, что вы ищете ...

$output = preg_replace("#<h3 class=\"hdr\">(.*?)</h3>#is", "", $input);

Используйте "is" в конце регулярного выражения, потому что это приведет к тому, что это будет регистр нечувствительный, который более гибкий.

3
ответ дан 4 December 2019 в 08:50
поделиться

попробуйте preg_match, затем preg_replace на следующем шаблоне:

/(<h3
[\s]+
[^>]*?
class=[\"\'][^\"\']*?hdr[^\"\']*?[\"\']
[^>]*?>
[\s\S\d\D\w\W]*?
<\/h3>)/i

Это грязно, и это должно работать хорошо, только если тег h3 не имеет встроенного javascript, который может содержать последовательности, на которые будет реагировать это регулярное выражение. Он далек от совершенства, но в простых случаях, когда используется тег h3, он должен работать.

Хотя я не пробовал, может потребоваться корректировка.

Другим способом было бы скопировать эту функцию, использовать вашу копию без h3, если это возможно.

1
ответ дан 4 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

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