我返回一个HTML文件的内容,如下所示:
<irrelevant things>
<tr id="myid">
<td>Content</td>
</tr>
<irrelevant things again>
或:
<irrelevant things>
<tr id="myid">
<td><a href="somewhere.com">Content</a></td>
</tr>
<irrelevant things again>
是否可以只用一个正则表达式在两种情况下只获取"内容"?
我试过这个,但没有任何结果:
preg_match('/<tr id="myid"><td>(<a href="[^'"]*">)?([^<]*)/', $html, $mycontent);
谢谢
正
则表达式不是最好的方法,而且由于您有一个id("myid"),因此您可以使用DOMDocument
轻松完成。例:
$doc = new DOMDocument();
@$doc->loadHTML($yourstring);
$node = $doc->getElementById('myid');
echo trim($node->textContent);
这是使用正则表达式执行此操作的一种方法:
<td>(?:<a.*?>)?([^<]+)
演示
但是,使用DOM解析器(如PHP Simple HTML DOM解析器)会更容易做到