2013-06-18 143 views
0
<strong class="tb-rmb-num"><em class="tb-rmb">¥</em>39.00</strong> 

我试图找回只数没有货币符号简单的HTML解析器

我当前的代码是

$ret = $html->find('strong[class=tb-rmb-num]'); 
echo $ret[0]; 

这将标志检索¥39.00咨询请,谢谢您。

+0

什么是你的HTML解析器? – pataluc

+0

simplehtmldom.sourceforge.net – CodeGuru

回答

3

在PHP中:

$string = '¥39.00'; 

if(preg_match('/([\d\.]+)/', $string, $m)){ 
    echo $m[1]; 
} 

,输出:

39.00

好吧,我会打破下来:

preg_match('/([\d\.]+)/', $string, $m) 

的preg_match是一个PHP函数,可以让我们使用正则表达式查找给定字符串中的模式匹配。

在这种情况下,正则表达式是:/([\d.]+)/

  • 的/ .. /被包含表达
  • 的定界符的(..)是一个组,无论组内的任何匹配都存储在$ m中。我们只有一个组(因为只有一组括号),所以这个第一组的比赛通过$ m [1]
  • 这个[..]是一个字符类。
  • \ d是所有数字字符的快捷键,0-9
  • 。意味着文字。字符(它与\ escape匹配,因为a在正则表达式中有特殊含义,但我们希望它表示一个字面值,而不是它的特殊含义)
  • 字符类[..]后面的+表示匹配字符在课堂上连续多次

本例中$ string的值被设置为¥39.00。您将需要用您的$ ret [0]代替我的示例中的$ string。

$ m是一个变量占位符来存储我们的小组赛(如上所述)

整个事情被包裹在一个if语句,这样你可以做一些事情,如果模式匹配的发现做其他别的事情,如果它WASN “T。

更多参考:

  1. http://php.net/manual/en/function.preg-match.php
  2. http://webcheatsheet.com/php/regular_expressions.php
+0

谢谢,但是这种方法称为什么,以上是什么意思,我宁愿理解它,而不是它:) – CodeGuru

+0

好吧,编辑与解释 – Drew

+0

谢谢,我明白很多:) – CodeGuru