PHP 正则表达式删除 HTML 标签

Tre*_*eam 1 php regex

我正在寻找一种在 PHP 中搜索字符串并删除的方法"<pre""</pre>"以及介于两者之间的所有内容。

例子:

$string = 'Hello, I am a little text. <pre class="foo">This should be deleted.</pre> This is fine again.';
// Some magic function
$newString = 'Hello, I am a little text.  This is fine again.';
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?如果我使用strip_tags(),则只会删除标签,但现在会删除标签内的内容。

非常感谢!

hwn*_*wnd 6

如果它只是一个小字符串,我不推荐它,但正则表达式在这里没问题。

$newString = preg_replace('~<pre[^>]*>[^<]*</pre>~', '', $str);
Run Code Online (Sandbox Code Playgroud)

但是,我在处理 HTML/XML 时总是使用DOM

$doc = new DOMDocument;
$doc->loadHTML($html);

foreach ($doc->getElementsByTagName('pre') as $tag) {
   $tag->parentNode->removeChild($tag);
}
Run Code Online (Sandbox Code Playgroud)