我正在使用PHP的DOMDocument来解析HTML文档的部分内容。
问题:
所有锚点(不是指向锚点的链接)都设置如下:
<a name="_Toc1234567">Overview of Data</a>
我希望格式如下:
<a name="_Toc1234567"></a>Overview of Data
文档中有很多这些,但在所有情况下,锚都有一个指定的名称 - 始终唯一。所有链接都没有指定名称。
到目前为止,我有这个:
<?php
$d = new DOMDocument;
$d->loadHTML(file_get_contents('source.html'));
$anchors = $d->getElementsByTagName('a');
foreach ($anchors as $anchor) {
$name = $anchor->getAttribute('name');
$atext = $anchor->nodeValue;
if (isset($name)) {
// move the anchor text outside of the anchor tag
// like this <a name="_Toc1234567"></a>Anchor text
}
}
$final = $d->saveHTML();
file_put_contents("result.html", $final);
?>
答案 0 :(得分:1)
如果jQuery适合您,您可以使用该代码执行此操作:
$.each($('a'), function(){
var content = $(this).html();
$(this).html('');
$(this).after(content);
});
答案 1 :(得分:0)
您可以创建新的文本节点
$textNode = $d->createTextNode ( $anchor->nodeValue );
然后清空nodeValue
$anchor->nodeValue = '';
但据我所知,你需要父母和下一个兄弟来添加$ textNode。
阅读本文和评论以获得一个想法: http://php.net/manual/de/domnode.insertbefore.php