2017-01-03 4 views
0

안녕 싶어와 식별자에 의해 내용이 같은 PHP 와 HTML 파일에서 줄을 제거 :있는 DOMDocument는 사업부를 제거하고는 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); 

"간단하게"때 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을 사용하려면 DTD (Document Type Declaration)가 필요합니다. $dom->validate()

은 그냥 HTML에 <!DOCTYPE html>를 추가하고이 작동 PHP Documentation

공지 사항 당신의 HTML 유효성 검사에 실패합니다.

이 기능이 작동하려면, 당신은 DOMElement :: setIdAttribute 또는 형식 ID이어야하는 속성을 정의하는 DTD와 속성 일부 ID를 설정 중 하나가 필요합니다. 나중에 이 함수를 사용하기 전에 DOMDocument :: validate 또는 DOMDocument :: $ validateOnParse를 사용하여 문서의 유효성을 검사해야합니다.