qq_41265012 2021-10-30 10:53 采纳率: 70%
浏览 65
已结题

PHP 正则匹配出错,请求解决?

$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);
我想把表格最后一列删除,为什么用正则替换失败了
  • 写回答

2条回答 默认 最新

  • 一把编程的菜刀 2021-11-01 11:08
    关注
    <?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>,可以使用我上面的这个方法,当然还有其他的方法,这个是都第一个印象写出来的
    
    评论

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 创建了问题 10月30日