在PHP中使用regex如何从此标记中获取108?
<td class="registration">108</td>
答案 0 :(得分:4)
正则表达式不是解析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
上面的代码使用loadHTML()
方法加载HTML字符串,查找所有<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的更多信息。 This帖子应该让你开始。
答案 1 :(得分:-1)
如果您希望强制使用正则表达式,请使用<td class=["']?registration["']?>(.*)</td>
表达式