1

QueryPath で識別されるタグ自体を変更したいと思います。具体的には、このようなアンカータグ
<a href="abc.html">Example</a>

<?php Blah-Blah ?>Example</a>
orに変換したいと思います
<?php Blah-Blah2 ?>

アンカー タグを見つけてその要素を取得できますが
$qp->find('a[href]'); $href = $qp->attr('href');
、QueryPath でタグ自体を変更/置換する方法はありますか?

または、コンポーネントをタグでラップしても問題ありません。<div id="specific">これが可能であれば、で検索して$qp->top('div[id="specific"]');、子全体 (アンカー タグとその要素) を php コードに置き換えることができると思います。

ただし、QueryPathでどちらの方法も見つけることができませんでした...

4

1 に答える 1

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');
});

クエリ内のすべての要素を反復する必要があります...

于 2014-11-05T13:25:21.763 に答える