PHP DOM-将THEAD中的TD标签替换为TH标签

本·辛克莱尔

我正在尝试将THEAD中的所有TD标签替换为TH标签。

我认为使用PHP DOM扩展是最好的。我对此很陌生,因此对我的知识不足深表歉意。

我进行了一些搜索,发现如何替换标签名称。但是,我无法弄清楚如何仅替换父对象中的标签名称(在本例中为THEAD标签)。我想将TD保留在TBODY中。

这是我在THEAD中缩小到TD的代码。那就是我迷路的地方。

如何将THEAD中的标签名称更改为TH?

$html = '<table>
    <thead>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
            <td>Column 3</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
            <td>Column 3</td>
        </tr>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
            <td>Column 3</td>
        </tr>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
            <td>Column 3</td>
        </tr>
    </tbody>
</table>';

// create empty document 
$document = new DOMDocument();

// load html
$document->loadHTML(html);

// Get theads
$theads = $document->getElementsByTagName('thead');

// Loop through theads (incase there are more than one!)
for($i=0;$i<$theads->length;$i++) {
    $thead = $theads->item($i);

    // Loop through TR
    foreach ($thead->childNodes AS $tr) {
      if ($tr->nodeName == 'tr') {

          // Loop through TD
          foreach ($tr->childNodes AS $td) {
              if ($td->nodeName == 'td') {

                // Replace this tag

                }
            }

      }
    }

}
凯文

如果您已经检查了手册,有这种->replaceChild()方法,你可以用它来代替td,以th标签:

$html = '<table>
    <thead>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
            <td>Column 3</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
            <td>Column 3</td>
        </tr>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
            <td>Column 3</td>
        </tr>
        <tr>
            <td>Column 1</td>
            <td>Column 2</td>
            <td>Column 3</td>
        </tr>
    </tbody>
</table>';

// create empty document
$document = new DOMDocument();
// load html
$document->loadHTML($html);
// Get theads
$theads = $document->getElementsByTagName('thead')->item(0); // get thead tag
foreach($theads->childNodes as $tr) { // loop thead rows `tr`
    $tds = $tr->getElementsByTagName('td'); // get tds inside trs
    $i = $tds->length - 1;
    while($i > -1) {
        $td = $tds->item($i); // td
        $text = $td->nodeValue; // text node
        $th = $document->createElement('th', $text); // th element with td node value
        $td->parentNode->replaceChild($th, $td); // replace
        $i--;
    }

}

echo $document->saveHTML();

Doc笔记

样本输出

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP的DOM与XPATH删除标签

来自分类Dev

替换DOM中的标签

来自分类Dev

使用php Dom在div中获取php标签

来自分类Dev

在PHP中操作DOM

来自分类Dev

使用 php 将 <div> 标签替换为 <p> 标签

来自分类Dev

DOM中PHP的Fatala错误

来自分类Dev

PHP 5.6中的DOM XML

来自分类Dev

php将字符串替换为html标签

来自分类Dev

PHP中的Img标签替换

来自分类Dev

PHP中的Img标签替换

来自分类Dev

PHP简单HTML DOM-在稀有标签中获取文本

来自分类Dev

使用PHP中的DOM解析器获取xml文档的标签和内容

来自分类Dev

使用DOM解析PHP中的RSS feed

来自分类Dev

在PHP XML DOM中删除匹配的节点

来自分类Dev

使用DOM解析PHP中的XML文件

来自分类Dev

使用DOM解析PHP中的XML文件

来自分类Dev

从PHP中的DOM节点值创建数组

来自分类Dev

PHP中的DOM元素GetElementByTagName问题

来自分类Dev

WordPress 中的 PHP DOM - 替换和添加属性

来自分类Dev

循环遍历 html 表并使用简单的 dom 解析器在 php 中获取 tr、th 和 td

来自分类Dev

将数组转换为字符串,然后将其插入表 td 标签 php

来自分类Dev

从 DOM 中移除 <div> 标签

来自分类Dev

如何将dom html推入php中的数组?

来自分类Dev

PHP DOM简单解析器从td获取值

来自分类Dev

PHP替换BBcode标签

来自分类Dev

PHP Regex替换标签

来自分类Dev

php:dom由另一个dom的根节点替换节点

来自分类Dev

在PHP中的标签之间替换值

来自分类Dev

用集成的PHP标签将Java内容替换为点击时的内容innerhtml