Как я могу разделить <h1>including this content</h1>
Я знаю, что вы можете использовать стрип-теги для удаления тегов, но я хочу, чтобы все между ними прошло.
Любая помощь будет оценена по достоинству.
Как я могу разделить <h1>including this content</h1>
Я знаю, что вы можете использовать стрип-теги для удаления тегов, но я хочу, чтобы все между ними прошло.
Любая помощь будет оценена по достоинству.
Как вы работаете с HTML, вы должны использовать парсер HTML для правильной обработки. Вы можете использовать PHP DOMDocument и запрашивать элементы с помощью 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, "");
Попробуйте это, я думаю, что это сработает для вас.