У меня есть строка как это:
<div class="container">
<h3 class="hdr"> Text </h3>
<div class="main">
text
<h3> text... </h3>
....
</div>
</div>
как я удаляю тег H3 с .hdr классом с помощью как можно меньше кода?
Как можно использовать в качестве маленький код? Самый короткий код - не обязательно лучший. Однако, если ваш тег HTML h3
всегда выглядит так, этого должно быть достаточно:
$html = preg_replace('#<h3 class="hdr">(.*?)</h3>#', '', $html);
Вообще говоря, использование регулярного выражения для синтаксического анализа HTML не является особенно хорошей идеей.
Это примерно то, что вы ищете ...
$output = preg_replace("#<h3 class=\"hdr\">(.*?)</h3>#is", "", $input);
Используйте "is" в конце регулярного выражения, потому что это приведет к тому, что это будет регистр нечувствительный, который более гибкий.
попробуйте preg_match, затем preg_replace на следующем шаблоне:
/(<h3
[\s]+
[^>]*?
class=[\"\'][^\"\']*?hdr[^\"\']*?[\"\']
[^>]*?>
[\s\S\d\D\w\W]*?
<\/h3>)/i
Это грязно, и это должно работать хорошо, только если тег h3 не имеет встроенного javascript, который может содержать последовательности, на которые будет реагировать это регулярное выражение. Он далек от совершенства, но в простых случаях, когда используется тег h3, он должен работать.
Хотя я не пробовал, может потребоваться корректировка.
Другим способом было бы скопировать эту функцию, использовать вашу копию без h3, если это возможно.