Php 带标签和介于两者之间的所有东西

Php 带标签和介于两者之间的所有东西,php,Php,如何剥离包含此内容的 我知道你可以使用条纹标签来移除标签,但我希望中间的所有东西都消失 任何帮助都将不胜感激 试试这个: preg_replace('/<h1[^>]*>([\s\S]*?)<\/h1[^>]*>/', '', '<h1>including this content</h1>'); 在处理HTML时,应该使用HTML解析器来正确处理它。您可以使用PHP查询元素,例如: 如果要去除所有标记并包括内容: $yourStri

如何剥离包含此内容的

我知道你可以使用条纹标签来移除标签,但我希望中间的所有东西都消失

任何帮助都将不胜感激

试试这个:

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

在处理HTML时,应该使用HTML解析器来正确处理它。您可以使用PHP查询元素,例如:


如果要去除所有标记并包括内容:

$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!

您还可以使用strip_标记删除标记以及其间的所有内容

$html包含要从中删除标记的html或php

带标签($html,“”)


试试这个,我想这会对您有用。

您可以使用XSLT样式表,将所有标记与其匹配,但h1标记除外,h1标记将与空字符串匹配,然后将其应用于您的文档。做这么简单的事情可能有点太重了。

HTML允许在属性值中使用纯
。HTML允许在属性值中使用纯
。Gumbo,你比我强。我只是做了一个修改:)如果所有HTML都在根节点内,这难道不会让您完全没有任何内容吗?这对我来说很有用,我喜欢代码的整洁。+1在这里使用解析器。只要正确地执行一次,就不必在您(或其他开发人员,或使用WYSIYWG编辑器的客户机)使正则表达式无效时重新访问。这看起来是一个很好的解决方案,但是如果有意义的话,我只想包括清单h1而不是实际的页面h1。我注意到这一点是为了其他用途,谢谢。@Andy只需将xPath选择器更改为只匹配包含元素中的h1。+1做得很好。但是,我可以在搜索中添加多个标记吗?类似于
$xpath->query('//h1//script//div')
?既然5.5年来没有人回复@asprin,我想我会的。要查询多个标记,只需使用您熟悉的OR运算符。这意味着您的代码将类似于
$xpath->query('//h1 |//script |//div')
Hello There
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
foreach ($xpath->query('//h1') as $node) {
    $node->parentNode->removeChild($node);
}
$html = $doc->saveHTML();
$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!
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))
--------------------------------------------------------------------------------
  >                        '>'