0

我正在返回一个看起来像这样的 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);

谢谢

4

2 回答 2

4

正则表达式不是最好的方法,因为你有一个 id ("myid"),你可以很容易地用DOMDocument. 例子:

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

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

echo trim($node->textContent);
于 2013-11-11T21:14:22.333 回答
1

这是使用正则表达式的一种方法:

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

演示

但是,使用PHP Simple HTML DOM Parser之类的 DOM 解析器会更容易

于 2013-11-11T21:16:20.977 回答