2010-02-05 64 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()將處理這些沒有幫助。

相關問題