Вставить текст после / перед самозакрывающимся тегом, используя DOM в PHP? - PullRequest
1 голос
/ 18 июня 2011
$imgs = $xpath->query('//img');
$i = 0;
foreach($imgs as $img) {
    $before = new DOMText($captions[$i]);
    $img->parentNode->insertBefore($before);
    $i++;
}

Я хочу вставить текст перед тегом, но не могу заставить это работать. Тексты иногда вставляются в неправильные места. Как я могу решить это?

1 Ответ

3 голосов
/ 18 июня 2011

Попробуйте:

$img->parentNode->insertBefore($before, $img);

Добавление $img в качестве аргумента («ссылочный узел») к функции вставки явно указывает вставке, где в иерархии вы хотите вставить новый узел. В противном случае в документах просто говорится «добавлено к дочерним элементам», что означает, что новый узел будет последним из дочерних элементов родителя.

, например

   <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...