我正在尝试运行一些html并在“A”标记的每个实例周围插入一些自定义标记。我到目前为止,但实际将我的伪标签附加到链接标签的最后一步是躲过我,有人可以提供一些指导吗?
直到最后一行代码 - 这就是我被困住的地方一切都很好。如何在选定的“A”标记的两侧放置这些伪标记?
$dom = new domDocument;
$dom->loadHTML($section);
$dom->preserveWhiteSpace = false;
$ahrefs = $dom->getElementsByTagName('a');
foreach($ahrefs as $ahref) {
$valueID = $ahref->getAttribute('name');
$pseudostart = $dom->createTextNode('%%' . $valueID . '%%');
$pseudoend = $dom->createTextNode('%%/' . $valueID . '%%');
$ahref->parentNode->insertBefore($pseudostart, $ahref);
$ahref->parentNode->appendChild($pseudoend);
$expression[] = $valueID; //^$link_name[0-9a-z_()]{0,3}$
$dom->saveHTML();
}
//$dom->saveHTML();
我希望能够执行以下操作:
<a href="xxx" name="yyy">text</a>
变成了
%%yyy%%<a href="xxx" name="yyy">text</a>%%/yyy%%
但目前它似乎没有做任何事情 - 页面输出,但没有替换或节点添加到源。
答案 0 :(得分:1)
为了确保ahref
节点被包裹......
foreach($ahrefs as $ahref) {
$valueID = $ahref->getAttribute('name');
$pseudostart = $dom->createTextNode('%%' . $valueID . '%%');
$pseudoend = $dom->createTextNode('%%/' . $valueID . '%%');
$ahref->parentNode->insertBefore($pseudostart, $ahref);
$ahref->parentNode->insertBefore($ahref->cloneNode(true), $ahref); // Inserting cloned element (in order to insert $pseudoend immediately after)
$ahref->parentNode->insertBefore($pseudoend, $ahref);
$ahref->parentNode->removeChild($ahref); // Removing old element
}
print $dom->saveXML();