The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
||||
|
||||
getting an international number from a string
Hey gurus, can anyone shed some light on how to take a string and turn it into a float? The catch is that I need to take into considerations the users international prefs like using a comma for decimal separator and a decimal for thousands separator versus the standard English version which is opposite to that.
The user may enter: 1999 or 1999.49 or 1999,49 or 1,999.49 or 1.999,49 or 1,999.5 How can I translate this to 1999.00, 1999.49 and 1999.50 respectively? Thanks |
#2
|
|||
|
|||
Try number_format:
Code:
$variable = '5,25'; if (strpos($variable, ',')) { $variable = str_replace(array('.',','), array('','.'), $variable); } $variable = number_format($variable, 2, '.', ''); |
#3
|
||||
|
||||
Thanks, just tried it and here are my results:
1,234.56 = 1.00 1234.56 = 1,234.56 1234.5 = 1,234.50 1,234.5 = 1.00 1,2345 = 1.00 1234,56 = 1,234.00 1234,5 = 1,234.00 1.234,56 = 1.23 1.234,5 = 1.23 The problem is that I dont know how the user is entering the data unless there is some way I can grab that info from vb EDIT: Hold on, you just changed your post Let me check it out now Ok. The problem with the above is if someone enters 1,345.5 it will give me 1.3345.5 BTW: Thanks for your time! BTW: Here are my revised figures based on number_format($var, 2, '.','') 1,234.56 = 1.00 1234.56 = 1234.56 1234.5 = 1234.50 1,234.5 = 1.00 1,2345 = 1.00 1234,56 = 1234.00 1234,5 = 1234.00 1.234,56 = 1.23 1.234,5 = 1.23 |
#4
|
|||
|
|||
Yeah, I see, working on a new one.
Okay, try the below, both with and without the following commented: Code:
// $locale_info['decimal_point'] = ','; Code:
<?php $variables = array( '1999', '1999.49', '1999,49', '1,999.49', '1.999,49', '1,999.5' ); $locale_info = localeconv(); foreach ($variables AS $variable) { // $locale_info['decimal_point'] = ','; $variable_orig = $variable; if ($locale_info['decimal_point'] == ',') { $variable = str_replace(array('.',','), array('','.'), $variable); } else { $variable = str_replace(',', '', $variable); } $variable = sprintf("%01.2f", $variable); echo $variable_orig.' => '.$variable."\n<br />\n"; } ?> Code:
1999 => 1999.00 1999.49 => 1999.49 1999,49 => 199949.00 XX 1,999.49 => 1999.49 1.999,49 => 2.00 XX 1,999.5 => 1999.50 Code:
1999 => 1999.00 1999.49 => 199949.00 XX 1999,49 => 1999.49 1,999.49 => 2.00 XX 1.999,49 => 1999.49 1,999.5 => 2.00 XX |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|