2010-02-05 5 views
-1

Мне нужна функция или код, чтобы получить числовое значение из строки, значение которой «2008 Выручка $ 5700,390,000». выход, который я хочу, составляет 5 700 390 000 долларов США.Чтобы получить числовое значение из буквенно-цифровой строки в PHP?

+0

Исправлена ​​ли строка «Выручка 2008 года»? Будет ли фиксировано числовое число? –

+0

Итак, вы хотите получить денежные суммы формата '$ ...' из строк? – Gumbo

+0

@SilentGhost: - Я попытался выполнить функцию str_replace(), удалив ненулевые значения. Но этим я получу 2008 год назад, что и было проблемой. –

ответ

2

Если вы абсолютно уверены, строка всегда будет отформатирован как YEAR TYPE VALUE с расстояниями между значениями можно:

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

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

$my_value = $exploded[2]; 
+0

Это все равно будет строка: «$ 5700,390,000» - поэтому вызов floatval или intval по этому значению все равно будет необходим. – Fenton

+0

спасибо Matiasf, да, формат тот же. –

+0

В дополнение к решению matiasf есть много способов сделать это просто с помощью строковых функций php. Например: my_value = strrchr ($ str, '$'); – GZipp

0

Я только знаю, C#, но я хотел бы использовать Regex, как [\ $ .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() будет работать с ними без посторонней помощи.

Смежные вопросы