preg_match_all无法捕获所有预期结果

Mic*_*Doe 3 php regex

我正在尝试从以下来源获取一些信息:

<random htmlcode here>
<td style="BORDER-RIGHT-STYLE:none;">
      <a id="dgWachtlijstFGI_ctl03_hlVolnaam" title="Klant wijzigen" class="wl" href="javascript: Pop(600,860,'klantwijzig','FrmKlant.aspx','?  Wijzig=true&amp;lcSchermTitel=&amp;zoekPK=+++140+12++8',false,true); ">FIRST LINE A</a>
      (SECOND LINE A)<br>
      THIRD LINE A        </td>
<random htmlcode here>
<td style="BORDER-RIGHT-STYLE:none;">
      <a id="dgWachtlijstFGI_ctl04_hlVolnaam" title="Klant wijzigen" class="wl" href="javascript: Pop(600,860,'klantwijzig','FrmKlant.aspx','?Wijzig=true&amp;lcSchermTitel=&amp;zoekPK=+++140+12++8',false,true); ">FIRST LINE B</a>
       (SECOND LINE B)<br>
      THIRD LINE B        </td>
<random htmlcode here>
Run Code Online (Sandbox Code Playgroud)

我到目前为止提出的是以下内容(感谢rubular.com)

<?php $bestand = 'input.htm';
$fd = fopen($bestand,"r");
$message = fread($fd, filesize    ($bestand));
$regexp = "FrmKlant.aspx.*\">(.*)<\/a>\s(.*)<br>\s(.*)\s\s(.*)"; 
if   (preg_match_all("#$regexp#siU", $message, $matches)) 
{   
print_r($matches);
}?
>
Run Code Online (Sandbox Code Playgroud)

这实际上似乎将我需要的第一行和第二行放在多维数组中。到目前为止一切都很好,因为我想要一个多维数组。但是,它似乎没有捕捉到第三条线。并以某种方式创建数组[4]

[1] => Array ( [0] => FIRST LINE A [1] => FIRST LINE B ) 
[2] => Array ( [0] =>  (SECOND LINE A) [1] => (SECOND LINE B) ) 
[3] => Array ( [0] => [1] => ) [4] => Array ( [0] => [1] => )
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是:

[0] => Array ( [0] => FIRST LINE A [1] => FIRST LINE B ) 
[1] => Array ( [0] =>  (SECOND LINE A) [1] =>  (SECOND LINE B) ) 
[2] => Array ( [0] => THIRD LINE A [1] => THIRD LINE B ) )
Run Code Online (Sandbox Code Playgroud)

Iva*_*sen 5

使用PHP的DOM解析器

示例不完整,但可以帮助您入门:

$dom = new DOMDocument();
$dom->loadHTML($yourHtmlDocument);

$xPath = new DOMXPath($dom);
$elements = $xPath->query('\\random\td\a'); // Or whatever your real path would be

foreach($elements as $node) {
  echo $node->nodeValue;
}
Run Code Online (Sandbox Code Playgroud)

顺便看看这个。