2011-07-23 13 views
0

DOMまたは正規表現を使用してこのタイプのpタグ<p>&nbsp;</p>を削除するにはどうすればよいですか?私も、このように複数のpを削除したいを削除する<p> </p> DOMまたは正規表現

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

答えて

5

あなたが最も簡単かつ最速のソリューションはstr_replace()を使用することはおそらくあり、'<p>&nbsp;</p>'、常に、正確に文字列を削除する場合:

$new_string = str_replace('<p>&nbsp;</p>', '', $old_string); 

私はこのような単純なケースのためのDOM を使用する必要はないと思う - と正規表現ですここでは必要ありません。もちろん


、あなたが何かをより複雑に交換する必要がある場合、それはあなたが希望する場合にはDOM操作;-)

+0

ません正規表現のソリューションは、ラインが固定されている場合でも、追加のスペースも、それが出力を変更しません、それを破るだろう常に速く – WooDzu

+0

です。 –

+1

@ WooDzu:正規表現は単純なstr_replace()より速いですか?それについてはあまり確かではありません。 –

0
preg_replace("|<p>&nbsp;</p>|", "", "<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p>&nbsp;</p>"); 
0

ため、常に正確に同じ文字列が...まあ、それはなるだろう時間ではありませんあなたは、文字列(Demo)として&nbspエンティティを照会することができ、XPathので(あなたの例では、ちょうどしかしstr_replaceを要求している)ことをやりたい:あなたは、XPathで&nbsp;を照会する必要がある場合、これは便利です

$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)); 

ホープ。

にも参照してください:Using XPATH to search text containing

関連する問題