删除所有不匹配p标签的标签在php中

问题描述:

我想删除所有与标签不匹配的标签,但不匹配<p>标签。 我这样:删除所有不匹配p标签的标签在php中

preg_replace("/<(?!p)>/", "", $html); 

但它不起作用。怎么了?

+2

您无法使用正则表达式解析HTML。改为使用HTML解析器。 – 2012-04-26 14:26:27

+3

你应该认真阅读这个http://stackoverflow.com/a/1732454/135448,这是令人兴奋和教育性的 – 2012-04-26 14:28:00

+0

这是否意味着从你的'$ html'你也想删除'','

','' ,''等标签。 – <span class="text-secondary"> <small> <a rel="noopener">anubhava</a></small></span> <span>2012-04-26 14:30:24</span>

使用,这就是它的存在。

$stripped = strip_tags($str, '<p>'); // Allow only paragraph tags 

演示这里:http://codepad.org/NEUEBWg7

请注意,该功能不触及许可标签的属性。如果你正在过滤用户输入,一定要考虑像onclick等属性以及更多可能会被滥用来执行一些迂回行为。

在最基本的,使用strip_tags()删除HTML:

echo strip_tags($text, '<p>'); 

更妙的是HTML Purifier

strip_tags的是你所需要的。 只需执行以下操作:

$result=strip_tags($html,"<p>");