0
<strong class="tb-rmb-num"><em class="tb-rmb">¥</em>39.00</strong>

我正在尝试仅在没有货币符号的情况下检索数字

我目前的代码是

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

这将检索它与标志 ¥39.00 请建议,谢谢。

4

1 回答 1

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
  • 这 。表示文字。字符(它用 \ 转义,因为正则表达式中的 . 具有特殊含义,但我们希望它表示文字 . 而不是特殊含义)
  • 字符类 [..] 之后的 + 表示尽可能多地匹配类中的字符

此示例中 $string 的值设置为 ¥39.00。在我的示例中,您需要将 $string 替换为您的 $ret[0]。

$m 是一个变量占位符来存储我们的组匹配(上面解释过)

整个事情都包含在 if 语句中,因此如果找到模式匹配,您可以做一些事情,否则如果没有,则做其他事情。

供进一步参考:

  1. http://php.net/manual/en/function.preg-match.php
  2. http://webcheatsheet.com/php/regular_expressions.php
于 2013-06-18T12:36:45.560 回答