Php 删除<;p>&;nbsp</p>;使用DOM或正则表达式

Php 删除<;p>&;nbsp</p>;使用DOM或正则表达式,php,html,regex,domparser,Php,Html,Regex,Domparser,如何使用DOM或正则表达式删除此类型的p标记 我也想像这样删除多个p <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> preg|u replace(“||“,”,“ ”; preg|u replace(“||“,”,“ ”; 如果要删除一个字符串,而该字符串始终是“””,最简单、最快的解决方案可能是使用: $new\u string=str\u repl

如何使用DOM或正则表达式删除此类型的p标记

我也想像这样删除多个p

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

preg|u replace(“|

|“,”,“

”;
preg|u replace(“|

|“,”,“

”;
如果要删除一个字符串,而该字符串始终是“

,最简单、最快的解决方案可能是使用:

$new\u string=str\u replace(“

”,“$old\u string”);
我认为对于这样一个简单的情况,没有必要使用DOM——这里也不需要正则表达式



当然,如果你需要替换更复杂的东西,那并不总是完全相同的字符串。。。好了,是时候进行DOM操作了;-)

如果要删除一个始终是

的字符串,最简单、最快的解决方案可能是使用:

$new\u string=str\u replace(“

”,“$old\u string”);
我认为对于这样一个简单的情况,没有必要使用DOM——这里也不需要正则表达式



当然,如果你需要替换更复杂的东西,那并不总是完全相同的字符串。。。好了,是时候进行DOM操作了;-)

如果您希望使用xpath执行此操作(您的示例只是要求
str\u replace
),您可以将
实体作为字符串()查询:

$html=”

不为空:)

'; $dom=新的DomDocument(); $dom->loadhtml($html); $xpath=newdomxpath($dom); $col=$xpath->query(“//p[text()=\”\xC2\xA0\”]) foreach($col作为$e){ $e->parentNode->removeChild($e); } echo$dom->saveXML($dom->getElementsByTagName('body')->item(0));
如果您需要使用xpath查询
,希望这对您有所帮助


另请参见:

如果您希望使用xpath执行此操作(您的示例只是要求
str\u replace
),您可以将
实体作为字符串查询():

$html=”

不为空:)

'; $dom=新的DomDocument(); $dom->loadhtml($html); $xpath=newdomxpath($dom); $col=$xpath->query(“//p[text()=\”\xC2\xA0\”]) foreach($col作为$e){ $e->parentNode->removeChild($e); } echo$dom->saveXML($dom->getElementsByTagName('body')->item(0));
如果您需要使用xpath查询
,希望这对您有所帮助


另请参见:

没有任何regexp解决方案始终是快速的。如果行是固定的,即使额外的空格也会打断它,即使它不会修改输出。@WooDzu:regex比简单的str_replace()快吗?对此不太确定。@Cem是的,如果字符串更改,这将不再起作用——这就是为什么我说“完全,始终”;-)@WooDzu哦,好的^^我现在明白多了,谢谢你的精确性:-)(我想你说的是“不,正则表达式解决方案…”);很抱歉造成混淆。没有任何regexp解决方案总是快速的。如果行被修复,即使额外的空格也会打断它,即使它不会修改输出。@WooDzu:regex比简单的str_replace()快吗?对此不太确定。@Cem是的,如果字符串更改,这将不再起作用——这就是为什么我说“完全,始终”;-)@WooDzu哦,好的^^我现在明白多了,谢谢你的精确性:-)(我想你说的是“不,正则表达式解决方案…”);很抱歉给你带来了困惑。
preg_replace("|<p>&nbsp;</p>|", "", "<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>");
$new_string = str_replace('<p>&nbsp;</p>', '', $old_string);
$html = '<body><p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Not empty :)</p>
</body>';

$dom = new DomDocument();
$dom->loadhtml($html);
$xpath = new DomXPath($dom);
$col = $xpath->query("//p[text()=\"\xC2\xA0\"]"); # &nbsp;
foreach($col as $e) {
    $e->parentNode->removeChild($e);
}
echo $dom->saveXML($dom->getElementsByTagName('body')->item(0));