在 PHP 中使用正则表达式如何从该标签中获取 108?
<td class="registration">108</td>
正则表达式不是解析 HTML 的好解决方案。改用 DOM 解析器:
$str = '<td class="registration">108</td>';
$dom = new DOMDocument();
$dom->loadHTML($str);
$tds = $dom->getElementsByTagName('td');
foreach($tds as $td) {
echo $td->nodeValue;
}
输出:
108
上面的代码使用方法加载你的 HTML 字符串loadHTML()
,找到所有的<td>
标签,遍历标签,然后回显节点值。
如果您只想获取特定的类名,可以使用XPath
:
$dom = new DOMDocument();
$dom->loadHTML($str);
$xpath = new DomXPath($dom);
// get the td tag with 'registration' class
$tds = $xpath->query("//*[contains(@class, 'registration')]");
foreach($tds as $td) {
echo $td->nodeValue;
}
这与上面的代码类似,只是它使用 XPath 来查找所需的标记。您可以在 PHP 手册文档中找到有关 XPath 的更多信息。这篇文章应该让你开始。
如果您想强制使用正则表达式,请使用<td class=["']?registration["']?>(.*)</td>
表达式