正则表达式以获取带有链接的单元格内容

时间:2013-11-11 21:03:09

标签: php html regex

我正在返回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);

由于

2 个答案:

答案 0 :(得分:4)

正则表达式不是最好的方式,因为你有一个id (“myid”),你可以使用DOMDocument轻松完成。例如:

$doc = new DOMDocument();
@$doc->loadHTML($yourstring);

$node = $doc->getElementById('myid');

echo trim($node->textContent);

答案 1 :(得分:1)

以下是使用正则表达式的方法:

<td>(?:<a.*?>)?([^<]+)

DEMO

但是,使用像PHP Simple HTML DOM Parser

这样的DOM解析器会更容易