我有一个损坏的 html 页面,不幸的是我无法用 xml/xcode 解析,所以我想出了正则表达式。我是一个正则表达式初学者,但我无法得到正确的结果。
来源
<td>FIELD:</td> <td>VALUE<td>
我想获得价值,这就是我卡住的地方
$regex = '{<td[^>]*<td>(.*?)</td>}';
编辑:结果我想要一个可以达到值的数组,所以我只对值感兴趣
我很感激每一个提示。
干杯
我有一个损坏的 html 页面,不幸的是我无法用 xml/xcode 解析,所以我想出了正则表达式。我是一个正则表达式初学者,但我无法得到正确的结果。
来源
<td>FIELD:</td> <td>VALUE<td>
我想获得价值,这就是我卡住的地方
$regex = '{<td[^>]*<td>(.*?)</td>}';
编辑:结果我想要一个可以达到值的数组,所以我只对值感兴趣
我很感激每一个提示。
干杯
试试这个:
'{<td>.*?</td>\s+<td>(.*?)</td>}'
但是您/
在 html 文本中遗漏了 a 如果损坏,您的意思是在结束标记处缺少斜杠,您可以使用这个:
'{<td>.*?</?td>\s+<td>(.*?)</?td>}'
结束标签中的斜杠现在是可选的
您的正则表达式存在一些立即可见的问题;例如,<td[^>]*<td>
不做你认为它做的事。但与其建议一个不同的正则表达式,让我敦促你做最理智的事情:
相信我。不要这样做。其他人会来这里建议新的正则表达式模式,他们的模式都是错误的。正则表达式甚至无法胜任解析干净的 HTML/XML 的任务,因此尝试在任意损坏的代码上使用它是一种疯狂的做法。试试HTML Tidy,它是为这类事情而设计的。根据 HTML 的问题,像HtmlPurifier或Beautiful Soup这样的解析器也可能能够使用它。
这可能看起来需要更多的努力,但从长远来看,你会节省自己的时间。