我想更改在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中找不到任何一种方法......
答案 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');
});
你必须迭代查询中的所有元素......