Php preg_match_all未捕获所有预期结果

Php preg_match_all未捕获所有预期结果,php,regex,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&a

我正试图从以下来源获得一些信息:

<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>
我要找的是:

[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 ) )
$regexp=“FrmKlant.aspx.*\”>(.*)s(.*)
\s(.*)s\s(.*);
尝试使用正则表达式从HTML/XML中提取信息通常不是一个好主意。正则表达式不适合处理嵌套结构。 如果您的“随机html”部分足够邪恶,那么您可以尝试的一切都将可怕地破坏,因此只有在对html有很好的控制时才使用它们

试试解析器。(谷歌找到了我,但我还没有试过)

使用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;
}

要阅读文件的全部内容,请看一下lol。不管我们说了多少次……他们一直在问,嗯?不要使用正则表达式解析html
[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 ) )
$regexp = "FrmKlant.aspx.*\">(.*)<\/a>\s(.*)<br>\s(.*)\s\s(.*)</td>"; 
$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;
}