2010-02-05 27 views
-1

我想要一个函数或代码从值为“2008年收入$ 5,700,390,000”的字符串中获取数值。我想要的产量是5,700,390,000美元。要从PHP中的字母数字字符串中获取数字值?

+0

固定字符串'2008年收入'?数字总是会被固定的吗? – 2010-02-05 13:30:57

+0

所以你想从字符串中获得格式为'$ ...'的金额? – Gumbo 2010-02-05 13:32:05

+0

@SilentGhost: - 我通过删除非数字值来尝试str_replace()函数。但通过这个,我将得到2008年,这是问题所在。 – 2010-02-05 13:46:18

回答

2

如果你是绝对肯定的字符串总是被格式化为YEAR类型值与值之间的间隔,你可以:

$str = "2008 Revenue $5,700,390,000"; 

$exploded = explode(" ", $str); 

$my_value = $exploded[2]; 
+0

这仍然是一个字符串:“$ 5,700,390,000” - 所以对该值的floatval或intval的调用仍然是需要的。 – Fenton 2010-02-05 13:40:43

+0

感谢Matiasf,是的格式是一样的。 – 2010-02-05 13:41:35

+0

除了matiasf的解决方案,还有很多方法可以简单地用php的字符串函数完成。例如:my_value = strrchr($ str,'$'); – GZipp 2010-02-05 14:09:10

0

我只知道C#,但我会用一个正则表达式,如[\ $ .0-9] +以其最简单的形式。如果您需要文化意识(例如不同的货币符号),则需要添加更多逻辑。希望这可以帮助。

1

这是一个混合使用内置的“floatval()”函数和一个正则表达式 - 它处理更复杂的字符串。

function floatvalue($value) { 
    return floatval(preg_replace('#^([-]*[0-9\.,\' ]+?)((\.|,){1}([0-9-]{1,2}))*$#e', "str_replace(array('.', ',', \"'\", ' '), '', '\\1') . '.\\4'", $value)); 
} 

如果你有例子更加简单的情况下,“32121.54BLAH”,floatval()将处理这些没有帮助。

相关问题