私は、この種のを削除するにはどうすればよいDOMxpathまたは正規表現を使用して<p><br/></p>を削除しますか?
$content = '<p><br/><br/><br/><br/></p>';
、私は別の問題に出くわしたまでそれが完璧に動作
$xpath = new DOMXPath($dom);
while(($nodeList = $xpath->query('//*[not(text()) and not(node()) and not(self::br)]')) && $nodeList->length > 0)
{
foreach ($nodeList as $node)
{
$node->parentNode->removeChild($node);
}
}
、<br/>
タグを維持するが、空のテキストノードを持つHTMLタグを削除するにはDOMXPathを使うことの最大を使用汚い<br/>
と<p>
?私は<p>
単独<br/>
を許可する必要はありませんが、私はこれだけのような適切なテキストで<br/>
を許可することを意味する、
$content = '<p>first break <br/> second break <br/> the last line</p>';
が可能ということですか?
正規表現では良いですか?
私はあなたが単に段落内で唯一のものであることを確認するためにチェックすることで、それらすべてを取り除くことができ、このような何かを試してみました
$nodeList = $xpath->query("//p[text()=<br\s*\/?>\s*]");
foreach($nodeList as $node)
{
$node->parentNode->removeChild($node);
}
が、それはこのエラーを返す、
Warning: DOMXPath::query() [domxpath.query]: Invalid expression in...
何が '
'と 'ハロー
ハロー
'になりますか?さらに多くのテストケースを提供できますか?私は少し解決策を持っているようですが、すべての場合を満たしているかどうかはわかりません。 –良い質問!私はちょうどそれを考えている!理想的には、テキストの前または後に '
'を削除したいと思います。出来ますか?私の新しい投稿を見てください - http://stackoverflow.com/questions/6844646/how-can-i-remove-br-if-no-text-comes-before-or-after-it-domxpath-or -regex – laukok