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


Regular expression to get cells content with link or not

我返回一个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解析器)会更容易做到