【问题标题】:preg_replace tr and td with any attributes into div with specific classpreg_replace 带有任何属性的 tr 和 td 到具有特定类的 div
【发布时间】:2014-02-01 16:06:29
【问题描述】:

我需要用具有特定类的 div 替换 tr 和 td 标签。

<td align="center" valign="top">CONTENT</td> 应替换为<div class="myCLass">CONTENT</div>

tr 标签也是如此。标签内可能有style、class、id、align、height等属性,需要替换。

我正在尝试将 table->tbody->tr->td 转换为 Bootstrap。所以我需要将 tr 标签更改为 <div class="row"> 并将 td 标签更改为 <div class="col-lg-12"> 并删除 table、tbody 标签。

这是我尝试过的,但没有成功:

$html = preg_replace('/<tr (.*?)<\/tr>/si', '<div class="myClass" $1</div>', $html); 

输入:

<table border="0" _mce_new="1">
  <tbody>
    <tr>
      <td align="center" valign="top">
        <img src="" class="img-responsive">
      </td>
      <td align="center" valign="top">
        <img src="" class="img-responsive">
      </td>
    </tr>
    <tr>
      <td align="center" valign="top">CONTENT 1</td>
      <td align="center" valign="top">CONTENT 2</td>
    </tr>
  </tbody>
</table>

输出:

<div class ="row">
  <div class ="col-lg-12">
    <img src="" class="img-responsive">
  </div>
  <div class ="col-lg-12">
    <img src="" class="img-responsive">
  </div>
</div>
<div class ="row">
  <div class ="col-lg-12">
    CONTENT 1
  </div>
  <div class ="col-lg-12">
    CONTENT 2
  </div>
</div>

这里有可能解决我的问题:

$html = preg_replace('/<td.*?>(.*?)<\/td>/i', '<div class="col-lg-12">$1</div>', $html);
$html = preg_replace('/<tr.*?>(.*?)<\/tr>/i', '<div class="row">$1</div>', $html);

之后,我删除了 table 和 tbody 标签,效果很好。

但另外我想问一下是否可以像这样重组代码:

第一行:第一个 tr 的第一个 td 和第二个 tr 的第一个 td

第二行:第一个 tr 的第二个 td 和第二个 tr 的第二个 td

等等……

【问题讨论】:

  • $html = preg_replace('//si', '
    ', $html);
  • 我正在尝试将 table->tbody->tr->td 结构转换为引导行->col 结构
  • 请点击Edit按钮编辑问题,并添加所有相关详细信息。
  • 我们鼓励您在这里使用 XSLT

标签: php regex


【解决方案1】:

删除&lt;tr 后面的空格。您的示例输入没有空格。

对于您编辑的问题: 假设每行具有相同数量的 td 元素(称为 ncols),您可以使用循环将每个 td 元素抓取到一个数组中,然后循环遍历数组 for i 从 0 到行数 - 1,打印数组[i] 和数组[i+ncols]。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签