需要帮助使用正则表达式从html文件中提取数据

时间:2011-03-02 23:49:31

标签: regex

我正在尝试使用PHP正则表达式将数据从html文件中提取到数组中。下面是两行数据文件。我想提取partnumber(9517170就是一个例子),model,make和下载URL。这是我失败的正则表达式尝试提取部件号和URL:

/ Row [0 | 1]([0-9] +)“(。*?)(\ / component [0-9a-zA-Z _: - \ /] +)/

那里的任何正则表达大师可以让我指向正确的方向吗?

谢谢!

    <tr id="table_6_row_127" class="fabrik_row oddRow1 9517170">
            <td class="fabrik_row___jos_baseplates___DemcoPart" ><a class='fabrik___rowlink' href='/baseplates/fitlist/details/6/6/127.html'>9517170</a></td>
            <td class="fabrik_row___jos_baseplates___Make" >Subaru</td>
            <td class="fabrik_row___jos_baseplates___Model" >Legacy Outback *4</td>
            <td class="fabrik_row___jos_baseplates___Years" >03-04</td>
            <td class="fabrik_row___jos_baseplates___A" >3</td>
            <td class="fabrik_row___jos_baseplates___B" >25</td>
            <td class="fabrik_row___jos_baseplates___C" >23</td>
            <td class="fabrik_row___jos_baseplates___D" >15 1/2</td>
            <td class="fabrik_row___jos_baseplates___Price" >370</td>
            <td class="fabrik_row___jos_baseplates___Download" ><a href='/component/docman/doc_download/250-tp20170.html' target='_self'>TP20170</a></td>
    </tr>
<tr id="table_6_row_431" class="fabrik_row oddRow0 9518272">
            <td class="fabrik_row___jos_baseplates___DemcoPart" ><a class='fabrik___rowlink' href='/baseplates/fitlist/details/6/6/431.html'>9518272</a></td>
            <td class="fabrik_row___jos_baseplates___Make" >Subaru</td>
            <td class="fabrik_row___jos_baseplates___Model" >Outback *4*9</td>
            <td class="fabrik_row___jos_baseplates___Years" >10-11</td>
            <td class="fabrik_row___jos_baseplates___A" >3</td>
            <td class="fabrik_row___jos_baseplates___B" >30</td>
            <td class="fabrik_row___jos_baseplates___C" >25-1/8"</td>
            <td class="fabrik_row___jos_baseplates___D" >17-1/4"</td>
            <td class="fabrik_row___jos_baseplates___Price" >370</td>
            <td class="fabrik_row___jos_baseplates___Download" ><a href='http://demco-products.com/component/docman/doc_download/921-tp20272.html' target='_self'>tp20272</a></td>
    </tr>

1 个答案:

答案 0 :(得分:2)

使用DOMDocument::loadHTML?它在引擎盖下使用libxml,速度快而且健壮。

请勿尝试使用正则表达式解析HTML。

我做得那么大胆,因为我在这里看到了很多,解决方案总是脆弱,最糟糕的是错误。一旦使用真正的HTML解析器获取所需的属性,那么使用正则表达式更合理。