2016-11-30 11 views
0

私はdomオブジェクトからtwigファイルを作成しています。特定のdivの周りにコードブロックを追加して、トラックの下でそれをtwigで使用できるようにしたいと思います。PHPのDOMノードの前後にテキストを挿入するにはどうすればよいですか?

だから私は今持っているhtmlコードは次のようである:

<div> 
    <div class="class1 class2"> 
    <div> 
     Some content here 
    </div> 
    </div> 
</div> 

そして、私は(フォーマットは重要ではありません)に変更したい:

<div> 
    {% block topBar %} 
    <div class="class1 class2"> 
     <div> 
     Some content here 
     </div> 
    </div> 
    {% endblock %} 
</div> 

だから私のような何かを行っています

$pullURL = "http://example.com"; 
$dom = new DOMDocument('1.0'); 
$dom->loadHTMLFile($pullURL); 
$domx = new DOMXPath($dom); 
$topBar = $domx->query("//*[contains(@class, 'class1 class2')]"); 
$startTopBlock = $dom->createTextNode("{% block topBar %}"); 
$topBar[0]->insertBefore($startTopBlock, $topBar[0]); 

ただし、メッセージが表示され続けます。

PHP Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in /path/to/file.php:41

ここで、41行目はinsertBeforeコードです。

DOMオブジェクトをテキストにラップするにはどうすればよいでしょうか?

答えて

1

問題は、私は親にそれを挿入するために必要だったので、正しいコードは次のようになります。

$topBar[0]->parentNode->insertBefore($startTopBlock, $topBar[0]); 

なく

$topBar[0]->insertBefore($startTopBlock, $topBar[0]); 

を私が前に親でこのコードを挿入すると$ topBar [0]。他のすべては正しかった。

関連する問題