2017-01-03 6 views
0

こんにちはたいと識別子によるコンテンツのdivと、それを削除します。だから、のDOMDocumentこのようなPHP とHTMLファイルから行を削除するPHP

<div id="buttons"> 
    <div id="buttonid_4"><a href="#">Button 4</a></div> 
    <div id="buttonid_3"><a href="#">Button 3</a></div> 
    <div id="buttonid_2"><a href="#">Button 2</a></div> 
    <div id="buttonid_1"><a href="#">Button 1</a></div> 
</div> 

、私はbuttonid_4を削除したい、その内容。私はそれが簡単だと思うが、私は答えを見つけることができ

<div id="buttons"> 
    <div id="buttonid_3"><a href="#">Button 3</a></div> 
    <div id="buttonid_2"><a href="#">Button 2</a></div> 
    <div id="buttonid_1"><a href="#">Button 1</a></div> 
</div> 

まず:それはこのようになることを |

は、私が試した:私は非オブジェクト

と毎回のメンバ関数のremoveChild()へ

電話があった

    $dom = new DOMDocument('1.0', 'utf-8'); 
        $dom->loadHTMLFile($The_Path_For_File); 
        $element = $dom->getElementById('buttonid_'. $Button_Id); 
        $element->parentNode->removeChild($element); 
        $dom->saveHTMLFile($The_Path_For_File); 

"などの単純な" ときI GetElementByIdで試したので、私はXPATHを続けます:

    $xpath = new DOMXpath($dom); 

        $nodeList = $xpath->query('//div[@id="buttonid'.$Button_Id.'"]'); 
        foreach($nodeList as $element){ 
         $dom->$element->removeChild($element); 
        } 
        $dom->saveHTMLFile($The_Path_For_File); 

私はエラーが発生しませんでしたが、メモ帳はファイルの更新を要求しましたが、変更はありません 誰でもこの方法を知っていますか?

答えて

0

getElementByIdの使用には、Document Type Declaration(DTD)が必要です。 $dom->validate()

はちょうどあなたのHTMLに<!DOCTYPE html>を追加し、それが動作します PHP Documentation

お知らせあなたのHTMLは、検証に失敗します。

この機能が動作するためには、あなたがDOMElementの:: setIdAttributeまたはID型であることが 属性を定義するDTDと属性 いくつかのIDを設定するかが必要になります。後者の場合、DOMDocument :: validateまたは DOMDocument :: $ validateOnParseを使用してこの関数を使用する前に、ドキュメントを で検証する必要があります。

関連する問題