如何在 PHP 中的 DOM 节点前后插入文本?

How can I insert text before and after a DOM Node in PHP?

我正在从 dom 对象创建一个 twig 文件,我想在特定的 div 周围添加一个代码块,这样我就可以在 twig 中使用它了。

所以我现在的 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 对象的最佳方式是什么?

问题是我需要将它插入父级,所以正确的代码应该是:

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

而不是

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

因为我想在 $topBar[0] 之前的父项中插入此代码。其他一切都是正确的。