用于替换html标签的prematch

时间:2010-07-02 13:21:06

标签: php preg-replace preg-match-all

使用preg match选择

<table align='center' id='tbl_currency'> <tr> <span class=bld>631.0075 USD</span>

我想选择这个号码和货币631.0075美元

此数字和货币是动态的,

有可能,

2 个答案:

答案 0 :(得分:1)

永远不要使用正则表达式,始终使用解析器:

$htmlfragment = "<table align='center' id='tbl_currency'> <tr> <td><span class=bld>631.0075 USD</span></td></tr></table>";

$domdoc = new DomDocument();
$domdoc->loadHTML($htmlfragment);

$xpath = new DOMXPath($domdoc);
$result = $xpath->query("//table[@id='tbl_currency']//span[@class='bld']");

if ($result->length > 0) {
  $currency_span = $result->item(0);
  print $currency_span->nodeValue;
} else {
  print "nothing found";
}

打印

631.0075 USD

在一个函数中包装它,你很高兴。

如果您之前从未使用过XPath,则可能需要浏览an XPath tutorial

答案 1 :(得分:0)

使用正则表达式从HTML源提取数据在stackoverflow上不受欢迎。请考虑使用html解析器执行此任务(例如SimpleHTMLDom)。

如果你想这样做一次,快速而且非常肮脏,也许你可以通过

之类的东西逃脱
"<span class=bld>([^<]*)</span>"

这假设您感兴趣的所有货币值都包含在span标记中,包含类bld且没有其他属性。