我正在从dom对象创建一个twig文件,我想在特定div周围添加一个代码块,以便在轨道上我可以在树枝中使用它。
所以现在的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致命错误:未捕获的异常'DOMException',消息为'Not 在/path/to/file.php:41
中找到错误'
其中第41行是insertBefore代码。
在文本中包装dom对象的最佳方法是什么?
答案 0 :(得分:1)
问题是我需要将其插入父级,因此正确的代码应为:
$topBar[0]->parentNode->insertBefore($startTopBlock, $topBar[0]);
而不是
$topBar[0]->insertBefore($startTopBlock, $topBar[0]);
因为我想在$ topBar [0]之前在父代码中插入此代码。其他一切都是正确的。