PHP Regular express для удаления тегов <h1> (и их содержимого)

Хей, я не могу найти регулярные выражения онлайн, чтобы удалить

<h1></h1> 

теги (и их содержимое).

Любой человек протягивает руку на это и помогает.

Не используйте регулярное выражение, используйте такой инструмент, как PHP Simple HTML DOM .

 // Construct dom from string $dom = str_get_html($html); // ...or construct dom from file/url $dom = file_get_html($path); // strip h1 tags (and their content) foreach ($dom->find('h1') as $node) { $node->outertext = ''; } 
 preg_replace('@<h1[^>]*?>.*?<\/h1>@si', '', $htmlsource); 

Вы не можете найти его, потому что его нет.

Регулярные выражения не подходят для этой задачи, так как теги <h1> могут быть вложенными в произвольную глубину. (Редактировать: Томалак указал, что им не разрешают, но реальность – это зло). Вместо этого попробуйте парсер HTML.

Выражение Turbod будет работать, если вы можете быть уверены, что нигде в вашем документе не может быть такая конструкция, как <h1>Foo <h1> Bar</h1></h1> .

Изменить: в зависимости от вашего сценария, стиль css, такой как h1 { display: none !important; } h1 { display: none !important; } может сделать трюк.

Вы также можете использовать модуль расширения DOM PHP :

 $domDocument = new DOMDocument; $domDocument->loadHTMLFile('http://example.com'); $domNodeList = $domDocument->getElementsByTagname('h1'); $domElemsToRemove = array(); foreach ($domNodeList as $domElement) { $domElemsToRemove[] = $domElement; } foreach($domElemsToRemove as $domElement) { $domElement->parentNode->removeChild($domElement); } var_dump($domDocument->saveHTML()); 

Почему бы не использовать strip_tags ?

если вы хотите использовать regexp, это работает для меня:

 $str = preg_replace("/<h1>.*?<\/h1>/si", '', $str); 

Значок вопроса переключает содержимое между тегами на неживое. Это необходимо для случая, когда у вас есть несколько тегов h1, поэтому всегда будет занимать контент между каждым из них, а не удалять все между первым открытием [h1] и последним закрытием [/ h1]

Модификатор «i» говорит, что игнорирует разницу в верхнем и нижнем регистре, а «s» говорит, что работает многострочный.