Хей, я не могу найти регулярные выражения онлайн, чтобы удалить
<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» говорит, что работает многострочный.