可能重复:
RegEx match open tags except XHTML self-contained tags
我遇到了奇怪的正则表达式问题,我正在用PHP解析一些HTML表。
RegEx我正在使用:<td[^>]*>(h.*?)</td>
<td>other data</td> <td>other data</td><td>Data_needed</td> <td>--</td>
但它也匹配所有其他数据。
现在我想将其与<td>Data_needed</td> <td>--</td>
我尝试了一些正则表达式,它们提供了像
这样的输出other data</td> <td>other data</td><td>Data_needed</td> <td>--
从第一个<td>
开始到最后一个</td>
但我希望来自Data_needed
<td>Data_needed</td> <td>--</td>
答案 0 :(得分:8)
Do not use regex for parsing HTML or XML (including XHTML). Ever.
改为使用HTML或XML解析器。快速搜索“php html parsing”出现this tool, Simple HTML DOM, as the first hit。 PHP还内置了DOM和SAX工具。
答案 1 :(得分:3)
您可以使用Simple HTML DOM代替。
用PHP5 +编写的HTML DOM解析器 你很容易操纵HTML 方式!
答案 2 :(得分:0)
一般的html解析不应该使用正则表达式来完成,但如果你的HTML很简单而不是嵌套,你可以试试
.*<td[^>]*>(.*?)</td>\s*<td>--</td>