Стрип-теги и все между ними

Как я могу удалить <h1>including this content</h1>

Я знаю, что вы можете использовать теги strip для удаления тегов, но я хочу, чтобы все прошло.

Любая помощь будет оценена по достоинству.

Поскольку вы имеете дело с HTML, вы должны использовать парсер HTML для его правильной обработки. Вы можете использовать DOMDocument PHP и запрашивать элементы с DOMXPath , например:

 $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); foreach ($xpath->query('//h1') as $node) { $node->parentNode->removeChild($node); } $html = $doc->saveHTML(); 

Попробуй это:

 preg_replace('/<h1[^>]*>([\s\S]*?)<\/h1[^>]*>/', '', '<h1>including this content</h1>'); 

Пример:

 echo preg_replace('/<h1[^>]*>([\s\S]*?)<\/h1[^>]*>/', '', 'Hello<h1>including this content</h1> There !!'); 

Вывод:

 Hello There 

Если вы хотите удалить ВСЕ теги и включая контент:

 $yourString = 'Hello <div>Planet</div> Earth. This is some <span class="foo">sample</span> content!'; $regex = '/<[^>]*>[^<]*<[^>]*>/'; echo preg_replace($regex, '', $yourString); #=> Hello Earth. This is some content! 

Атрибуты HTML могут содержать < или > . Итак, если ваш HTML слишком запутан, этот метод не будет работать, и вам понадобится парсер DOM.


Регулярное выражение

 NODE EXPLANATION -------------------------------------------------------------------------------- < '<' -------------------------------------------------------------------------------- [^>]* any character except: '>' (0 or more times (matching the most amount possible)) -------------------------------------------------------------------------------- > '>' -------------------------------------------------------------------------------- [^<]* any character except: '<' (0 or more times (matching the most amount possible)) -------------------------------------------------------------------------------- < '<' -------------------------------------------------------------------------------- [^>]* any character except: '>' (0 or more times (matching the most amount possible)) -------------------------------------------------------------------------------- > '>' 

Вы можете использовать таблицу стилей XSLT и сопоставлять все теги себе, за исключением тега h1, который будет сопоставлен с пустой строкой, а затем применить его к вашему документу. Возможно, это слишком тяжело для того, чтобы сделать что-то столь же простое, как это.

Вы также используете strip_tags, чтобы удалить теги, а также все между ними.

$ html содержат html или php, где вы хотите удалить теги.

strip_tags ($ HTML, "");

Попробуйте это, я думаю, что это сработает для вас.