我需要preg_replace tr和td标签以及具有特定类的div。
<td align="center" valign="top">CONTENT</td>
应替换为<div class="myCLass">CONTENT</div>
tr标签也是如此。标签内可能有样式,类,id,对齐,高度等属性,需要更换。
我正在尝试将table-&gt; tbody-&gt; tr-&gt; 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>
Outout:
<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标签,它的工作方式非常好。
但另外我想询问是否可以像这样重构代码:
第一行:第一个td来自第一个tr,第一个来自第二个tr
第二行:第一个tr的第二个td和第二个tr的第二个td
等...
答案 0 :(得分:0)
删除<tr
之后的空格。您的示例输入没有空格。
针对您编辑过的问题: 假设每行具有相同数量的td元素(称为ncols),您可以使用循环将每个td元素抓取到一个数组中,然后循环遍历i的数组,从0到行数 - 1,打印array [i]和array [i + ncols]。