$str='
<table class="ntable">
<tbody>
<tr>
<th class="tx">序号</th>
<th>项目1</th>
<th>项目2</th>
<th>项目3</th>
<th>项目4</th>
<th>项目5</th>
<th>项目6</th>
</tr>
<tr>
<td class="tx">1</td>
<td>内容1</td>
<td>内容2</td>
<td>内容3</td>
<td>内容4</td>
<td>内容5</td>
<td>内容6</td>
</tr>
<tr>
<td class="tx">2</td>
<td>内容1-1</td>
<td>内容2-2</td>
<td>内容3-3</td>
<td>内容4-4</td>
<td>内容5-5</td>
<td>内容6-6</td>
</tr>
<tr>
</tbody>
</table>';
$str = preg_replace('/<td>(.*?)<\/td><\/tr>/i','</tr>',$str);
$str = preg_replace('/<th>(.*?)<\/th><\/tr>/i','</tr>',$str);
我想把表格最后一列删除,为什么用正则替换失败了
<?php
header("Content-Type: text/html; charset=gb2312");
$str='
<table class="ntable">
<tbody>
<tr>
<th class="tx">序号</th>
<th>项目1</th>
<th>项目2</th>
<th>项目3</th>
<th>项目4</th>
<th>项目5</th>
<th>项目6</th>
</tr>
<tr>
<td class="tx">1</td>
<td>内容1</td>
<td>内容2</td>
<td>内容3</td>
<td>内容4</td>
<td>内容5</td>
<td>内容6</td>
</tr>
<tr>
<td class="tx">2</td>
<td>内容1-1</td>
<td>内容2-2</td>
<td>内容3-3</td>
<td>内容4-4</td>
<td>内容5-5</td>
<td>内容6-6</td>
</tr>
<tr>
</tbody>
</table>';
$pattern='/\s{2,}<\/tr>/';
$str=preg_replace($pattern,'</tr>', $str);
$str = preg_replace('/<td>(.*?)<\/td><\/tr>/','</tr>',$str);
$str = preg_replace('/<th>(.*?)<\/th><\/tr>/','</tr>',$str);
echo $str;
?>
因为你使用的是贪婪,所以<td>(.*?)<\/td><\/tr> 这样就会匹配到第一个<td>直到租最后一个<\/td>,可以使用我上面的这个方法,当然还有其他的方法,这个是都第一个印象写出来的
$str = preg_replace('/<td>(.*?)<\/td><\/tr>/g','</tr>',$str);
$str = preg_replace('/<th>(.*?)<\/th><\/tr>/g','</tr>',$str);