我有很多文章,分为几个部分,存储在数据库中。每个部分都包含一个section标签,后跟一个标题(h2)和一个主div。有些还有子标题(h3)。原始显示看起来像这样:
<section id="ecology">
<h2 class="Article">Ecology</h2>
<div class="Article">
<h3 class="Article">Animals</h3>
我正在使用以下DOM脚本添加一些类,ID和glyphicons:
$i = 1; // initialize counter
// initialize DOMDocument
$dom = new DOMDocument;
@$dom->loadHTML($Content); // load the markup
$sections = $dom->getElementsByTagName('section'); // get all section tags
if($sections->length > 0) { // if there are indeed section tags inside
// work on each section
foreach($sections as $section) { // for each section tag
$section->setAttribute('data-target', '#b' . $i); // set id for section tag
// get div inside each section
foreach($section->getElementsByTagName('h2') as $h2) {
if($h2->getAttribute('class') == 'Article') { // if this div has class maindiv
$h2->setAttribute('id', 'a' . $i); // set id for div tag
}
}
foreach($section->getElementsByTagName('div') as $div) {
if($div->getAttribute('class') == 'Article') { // if this div has class maindiv
$div->setAttribute('id', 'b' . $i); // set id for div tag
}
}
$i++; // increment counter
}
}
// back to string again, get all contents inside body
$Content = '';
foreach($dom->getElementsByTagName('body')->item(0)->childNodes as $child) {
$Content .= $dom->saveHTML($child); // convert to string and append to the container
}
我想修改上面的代码,以便在标记之间放置“内部文本”的某些示例。
例如,请考虑以下标题:
<h3 class="Article">Animals</h3>
<h3 class="Article">Plants</h3>
我希望DOM将它们更改为:
<h3 class="Article"><span class="label label-default">Animals</span></h3>
<h3 class="Article"><span class="label label-default">Plants</span></h3>
我想用h2标签做类似的事情。我还不太了解DOM术语以搜索好的教程 - 更不用说与DOM程序和jQuery的混淆了。 ;)
我认为这些是我需要关注的基本功能,但我不知道如何插入它们:
$text = $data->textContent;
elementNode.textContent=string
两个注意事项:1)我知道我可以使用jQuery(可能更容易),但我认为PHP可能会更好,因为他们说一些用户可以禁用JavaScript。 2)我正在使用“文章”类来主要区分我想要由PHP DOM设计的元素。 DOM脚本不应该影响具有不同类的头或根本不具有类的头。