如何在QueryPath中更改标记本身?

时间:2014-10-05 00:17:03

标签: php querypath

我想更改在QueryPath中标识的标记本身。具体来说,我想转换像这样的锚标签 <a href="abc.html">Example</a>

<?php Blah-Blah ?>Example</a>

<?php Blah-Blah2 ?>

我可以找到锚标签并检索其元素:
$qp->find('a[href]'); $href = $qp->attr('href');
但是,有没有办法在QueryPath中更改/替换标签本身?

或者我可以使用<div id="specific">标记包装组件 - 如果可以的话,我想我可以用$qp->top('div[id="specific"]');搜索它,然后可以替换整个子标记(锚标记)和它的元素)与PHP代码。

但是,我在QueryPath中找不到任何一种方法......

1 个答案:

答案 0 :(得分:4)

function renameTag( DOMElement $oldTag, $newTagName ) {
   $document = $oldTag->ownerDocument;

   $newTag = $document->createElement($newTagName);
   $oldTag->parentNode->replaceChild($newTag, $oldTag);

   foreach ($oldTag->attributes as $attribute) {
       $newTag->setAttribute($attribute->name, $attribute->value);
   }
   foreach (iterator_to_array($oldTag->childNodes) as $child) {
       $newTag->appendChild($oldTag->removeChild($child));
   }
   return $newTag;
}

$qp->find('a[href]')->each(function($index,$element){
   renameTag($element,'?php');
});

你必须迭代查询中的所有元素......