dongliugu8843 2013-04-03 21:09
浏览 43
已采纳

php preg_match搜索模式

I have a table and would like to get a 2d array (per line and the cell values for each line). I know that I have to use preg_match but I am not good at creating patterns.

May you help me? Would be veeeeeery nice!!!!

Thank you!!!

Here is my table structure:

<table class="maintable">
<tr>
<td class="headtable">
Tag
</td>
<td class="headtable">
Klasse
</td>
<td class="headtable">
Zeit
</td>
<td class="headtable">
Pos
</td>
<td class="headtable">
Lehrer
</td>
<td class="headtable">
Fach
</td>
<td class="headtable">
Raum
</td>
<td class="headtable">
Info
</td>
<td class="headtable">
Art
</td>
</tr>
<tr class="evenrow">
<td class="evencell">
Mo
</td>
<td class="evencell">
05a
</td>
<td class="evencell">
09:45
</td>
<td class="evencell">
3. Stunde
</td>
<td class="evencell">
+TIN (KOL)
</td>
<td class="evencell">
In En
</td>
<td class="evencell">
223
</td>
<td class="evencell">

</td>
<td class="evencell">
Geändert
</td>
</tr>
<tr class="oddrow">
<td class="oddcell">
&nbsp
</td>
<td class="oddcell">
&nbsp
</td>
<td class="oddcell">
10:30
</td>
<td class="oddcell">
4. Stunde
</td>
<td class="oddcell">
+TIN (KOL)
</td>
<td class="oddcell">
In En
</td>
<td class="oddcell">
223
</td>
<td class="oddcell">

</td>
<td class="oddcell">
Geändert
</td>
</tr>
<tr class="evenrow">
<td class="evencell">
&nbsp
</td>
<td class="evencell">
&nbsp
</td>
<td class="evencell">
13:45
</td>
<td class="evencell">
8. Stunde
</td>
<td class="evencell">
+NUS (CRI), WIK
</td>
<td class="evencell">
Comp
</td>
<td class="evencell">
022 INF2, 021 INF1
</td>
<td class="evencell">

</td>
<td class="evencell">
Geändert
</td>
</tr>
<tr class="oddrow">
<td class="oddcell">
&nbsp
</td>
<td class="oddcell">
05b
</td>
<td class="oddcell">
07:55
</td>
<td class="oddcell">
1. Stunde
</td>
<td class="oddcell">
+WEP (SMA)
</td>
<td class="oddcell">
EN
</td>
<td class="oddcell">
121
</td>
<td class="oddcell">

</td>
<td class="oddcell">
Geändert
</td>
</tr>
</table>
  • 写回答

1条回答 默认 最新

  • dongquelu1239 2013-04-03 21:46
    关注

    As said in the comments this is not a good idea to parse HTML using regex. Anyway, here is how you could achieve it using preg_match_all assuming $input contains the input string :

    <?php
    
    preg_match_all('#<tr[^>]*>(.*?)</tr>#is', $input, $lines);
    
    $result = array();
    
    foreach ($lines[1] as $k => $line) {
        preg_match_all('#<td[^>]*>(.*?)</td>#is', $line, $cell);
    
        foreach ($cell[1] as $cell) {
            $result[$k][] = trim($cell);
        }
    }
    
    var_dump($result);
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真