$imgs = $xpath->query('//img');
$i = 0;
foreach($imgs as $img) {
$before = new DOMText($captions[$i]);
$img->parentNode->insertBefore($before);
$i++;
}
我想在标签之前插入一些文本但是我无法使其工作。文本有时会插入错误的地方。我该如何解决这个问题?
答案 0 :(得分:3)
尝试:
$img->parentNode->insertBefore($before, $img);
将$img
作为参数(“引用节点”)添加到insert函数中,显式地告诉insert要插入新节点的层次结构中的位置。否则,文档只是说“附加到子节点”,这意味着新节点将是父节点的最后一个节点。
e.g。
<span> <-- parentNode
<b>This is some text before the image</b>
<img ...> <--- $img node
<i>This is some text after the image</b>
</span>
如果没有额外的参数,你会得到:
<span>
<b>...</b>
<img ...>
<i>...</i>
new text node here <-- appended to parent Node's children, e.g. last
</span>
通过参数,你得到:
<span>
<b>...</b>
new text node here <--the "before" position
<img ...>
<i>...</i>
</span>