文字列を
$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 が含まれていることもあり、ページ全体の構造がめちゃくちゃになってしまいます。