我知道我们可以通过将字符串加载到
$doc = DOMDocument::loadXML($xml_str);
然后像这样获取 H1 标签:
$list = $doc->getElementsByTagName("h1");
for ($i = 0; $i < $list->length; $i++) {
print($list->item($i)->nodeValue . "<br/>\n");
}
如果我想将这些 H1 更改为 H2,我会有点迷茫。我读过关于appendChild()
,但这会使事情变得非常混乱。有没有办法递归地降级包含 html 的字符串中的标题标签?该方法将接受以下参数:
function demoteHeadings($xml_string, $top_level='H2'){
//if string's highest heading is more than $top_level,
//we demote all headings in this html by 1 level. i.e. if
//h1 is found, all h1s, h2s and so on are demoted one level -
//and we recursively call this function again;
if($top_level_in_xml > $top_level) demoteHeadings($output, $top_level);
}
我希望我说得通。我想要实现的是自动解析我的客户在他们的 CMS 中输入的标题......当标题已经是 h1 时,他们在文章中使用 H1。有时,还有一个带有 h1 的页面标题,这确实弄乱了整个页面的结构。