Как я могу удалить <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, "");
Попробуйте это, я думаю, что это сработает для вас.