使用正则表达式从PHP中的标记中获取值

时间:2013-09-26 14:54:09

标签: php regex

在PHP中使用regex如何从此标记中获取108?

<td class="registration">108</td>

2 个答案:

答案 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

Demo!

上面的代码使用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;
}

Demo!

这与上面的代码类似,不同之处在于它使用XPath来查找所需的标记。您可以在PHP手册文档中找到有关XPath的更多信息。 This帖子应该让你开始。

答案 1 :(得分:-1)

如果您希望强制使用正则表达式,请使用<td class=["']?registration["']?>(.*)</td>表达式