Php 带有负前瞻和xhtml的Regexp

Php 带有负前瞻和xhtml的Regexp,php,regex,html-parsing,Php,Regex,Html Parsing,我有一个执行负前瞻的正则表达式 /\b(\w+)\b(?![^<]*</{0,1}(a|script|link|img)>)/gsmi /\b(\w+)\b(?![^我知道您要求一个正则表达式,但这里有一个解决方案,它使用的是一些不需要的东西 例子: $html=parentNode->removeChild($node); } echo$dom->saveHTML(); 输出: 这是一个示例文本 链接和图像等 我建议您考虑将其作为一个选项。提示:使用起来更简单,建议

我有一个执行负前瞻的正则表达式

/\b(\w+)\b(?![^<]*</{0,1}(a|script|link|img)>)/gsmi

/\b(\w+)\b(?![^我知道您要求一个正则表达式,但这里有一个解决方案,它使用的是一些不需要的东西


例子:
$html=parentNode->removeChild($node);
}
echo$dom->saveHTML();
输出:
这是一个示例文本
链接和图像等



我建议您考虑将其作为一个选项。

提示:使用起来更简单,建议您使用,请注意不能在字符类中使用整词,即
[^\n可能更简单是的,但现在有很多事情取决于一个正则表达式。我肯定会看看DOM解决方案。我只是说,对于一些简单的情况,使用正则表达式并不总是坏事。但是我建议对于中间情况,使用正则表达式时不要使用正则表达式确认你的对手。
<p>This is a sample text <a href="#">with</a> a link and an image <img src="" alt="" /> and so on</p>
/\b(\w+)\b(?![^<]*</{0,1}(a|script|link)>)(?![^\<img]*>)/gsmi
$html = <<<'HTML'
<p>This is a <em>sample</em> text <a href="#">with</a>
 a link and an image <img src="" alt="" /> and so on</p>
HTML;

$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);

foreach($xpath->query('//a | //link | //script | //img') as $node) {
    $node->parentNode->removeChild($node);
}

echo $dom->saveHTML();
<p>This is a <em>sample</em> text 
 a link and an image  and so on</p>