检索 ID PHP preg_match_all

Retrieve ID PHP preg_match_all

我想从以下 table 中检索“376901”:

<td class="evn_tdata_l">Reconciliation-Manager_RECON-MGMT_SFTP_T</td>
<td class="evn_tdata_l">376901</td>

现在我试过的是以下代码:

    if (preg_match_all("/<td[^>]+?>Reconciliation-Manager_RECON-MGMT_SFTP_T<\/td><td[^>]+?>(.*)<\/td>/s", $html, $matches)) {
    print_r($matches);
} else {
    echo "No se encontró ninguna coincidencia.";

我没看出哪里不对,请指教? 谢谢。

<td>

之间添加\s*
/<td[^>]+?>Reconciliation-Manager_RECON-MGMT_SFTP_T<\/td>\s*<td[^>]+?>(.*)<\/td>/sU

您的模式中的问题是您没有描述换行符,最终没有描述第一个结束标记 </td> 和随后的开始标记 <td... 之间的其他白色 space 字符.

但是你可以使用一种不关心这些细节的方式,只使用html结构。 作为结构化数据,您可以使用 xpath 查询在 XML 或 HTML 内容中获取所需的信息,例如:

$html = <<<'EOD'
<td class="evn_tdata_l">Reconciliation-Manager_RECON-MGMT_SFTP_T</td>
<td class="evn_tdata_l">376901</td>
EOD;

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

$xp = new DOMXPath($dom);

$query = '//td[@class="evn_tdata_l" and text()="Reconciliation-Manager_RECON-MGMT_SFTP_T"]/following-sibling::td[1]';

$result = $xp->query($query)->item(0)->nodeValue;

echo $result;