1

在一个简单的 HTML 表格中,我想删除最后一列

<table>
<tbody>
<tr>
    <th>1</th>
    <th>2</th>
    <th>3</th>
    <th rowspan="3">I want to remove this</th>
</tr>

<tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    <td rowspan="3">I want to remove this</td>
</tr>

我正在使用此代码,但我仍然留下内容以及th和 td行跨度

$myTable = preg_replace('#</?td rowspan[^>]*>#i', '', $myTable);
echo $myTable

问题:如何删除最后一列及其内容?

4

2 回答 2

1
<?php

  // Create a new DOMDocument and load the HTML
  $dom = new DOMDocument('1.0');
  $dom->loadHTML($html);

  // Create a new XPath query
  $xpath = new DOMXPath($dom);

  // Find all elements with a rowspan attribute
  $result = $xpath->query('//*[@rowspan]');

  // Loop the results and remove them from the DOM
  foreach ($result as $cell) {
    $cell->parentNode->removeChild($cell);
  }

  // Save back to a string
  $newhtml = $dom->saveHTML();

看到它工作

于 2012-05-17T12:08:24.810 回答
0

我想这会做到的

preg_replace("/<(?:td|th)[^>]*>.*?<\/(?:td|th)>\s+<\/tr>/i", "</tr>", $myTable);

</tr>假设您在每一行的末尾都有关闭 tr 标签( ),这与您的示例不同

编辑:这将在关闭之前删除任何<td><th>元素,</tr>无论它们是否有任何属性

工作示例

于 2012-05-17T11:57:02.837 回答