我知道我们可以通过将字符串加载到
$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,这就真正地破坏了整个页面的结构。
for ($i = 5; $i >= 1; $i--)...
- James K.