ネイティブXML 操作ライブラリの使用
HTML コンテンツが変数 $html に格納されていると仮定します。
$html='<html>
<body>
bla bla bla bla
<div id="myDiv">
more text
<div id="anotherDiv">
And even more text
</div>
</div>
bla bla bla
</body>
</html>';
ID でタグを削除するには、次のコードを使用します。
$dom=new DOMDocument;
$dom->validateOnParse = false;
$dom->loadHTML( $html );
// get the tag
$div = $dom->getElementById('anotherDiv');
// delete the tag
if( $div && $div->nodeType==XML_ELEMENT_NODE ){
$div->parentNode->removeChild( $div );
}
echo $dom->saveHTML();
の特定のバージョンでは、メソッドを使用するために が存在するlibxml
必要があることに注意してください。doctype
getElementById
その場合、 $html を先頭に追加できます<!doctype>
$html = '<!doctype>' . $html;
または、ゴードンの回答で示唆されているようDOMXPath
に、xpath を使用して要素を見つけるために使用できます。
$dom=new DOMDocument;
$dom->validateOnParse = false;
$dom->loadHTML( $html );
$xp=new DOMXPath( $dom );
$col = $xp->query( '//div[ @id="anotherDiv" ]' );
if( !empty( $col ) ){
foreach( $col as $node ){
$node->parentNode->removeChild( $node );
}
}
echo $dom->saveHTML();
最初の方法は、タグに関係なく機能します。同じ ID で別のタグを持つ 2 番目のメソッドを使用する場合、たとえばを ' 'にform
置き換えるだけです。//div
//div[ @id="anotherDiv" ]
//form