在PHP中使用DOM在自闭标签之后/之前插入文本?

时间:2011-06-18 02:43:08

标签: php dom insert tags

$imgs = $xpath->query('//img');
$i = 0;
foreach($imgs as $img) {
    $before = new DOMText($captions[$i]);
    $img->parentNode->insertBefore($before);
    $i++;
}

我想在标签之前插入一些文本但是我无法使其工作。文本有时会插入错误的地方。我该如何解决这个问题?

1 个答案:

答案 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>