使用PHP DOM修改数据库数据(包含在标记中)

时间:2015-02-07 01:07:22

标签: php html dom

我有很多文章,分为几个部分,存储在数据库中。每个部分都包含一个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脚本不应该影响具有不同类的头或根本不具有类的头。

0 个答案:

没有答案