阅读货币格式

时间:2011-01-05 12:28:52

标签: php format currency

也许对某些人来说这很容易,但我想学习

有两种货币格式:

第一种货币格式 1,123,123.12 ,此格式可能类似于 $ 1,123,123.12 1,123,123.12€

第二种货币格式 1.123.123,12 ,这可能是 $ 1.123.123,12 1.123.123,12€所以区别在于点和逗号的位置

以上格式为

$this->value('one of the currency format insert here');

e.g。 $this->value('$1,123,123.12');$this->value('1.123.123,12€');

我想知道的是代码 if (first currency format) {use blah .. blah ..} elseif (second currency format) {use blah .. blah ..} else {/ / unsupported format}

那么代码如何识别条目是输入第一种货币格式还是第二种货币格式?

感谢您的指示和想法。

更新:

我为示例中的错误道歉

当我尝试测试代码时,我有点困惑,因为它似乎无法正常工作

然后我更改了我的部分,以便 $ value ['amount'] 可以使用

第一种货币格式 1,123,123.12 ,此格式可能类似于 $ 1,123,123.12 1,123,123.12€

第二种货币格式 1.123.123,12 ,这可能是 $ 1.123.123,12 1.123.123,12€ < / p>

然后值['amount'] 将首先识别代码,如下面的条件

class curr_format {

private bla...bla..1
private bla...bla..2
var etc..

    public function curr_format ($bla...,$and_bla..) {

//then make conditional is here
if (first currency format) {//use blah .. blah ..} 
elseif (second currency format) {//use blah .. blah ..} 
else {/ / unsupported format}
//another codes..

在结尾输出如下:

$identify = new curr_format();
echo $identify->curr_format($value['amount'],$else_statement);

3 个答案:

答案 0 :(得分:2)

检查3个最后一个字符是什么,如果它是“,”或“。”。用此来确定您的货币格式。

$value =  "1,123,123.12";
if($value[strlen($value)-3]==',') $currency_format = "A";
else $currency_format="B";

答案 1 :(得分:1)

function getNumber( $inStr ){
  if( preg_match( '/[\,\.]\d{2}\D?$/' , $inStr ) ){
   # Has 2 Decimal Places
    return (float) preg_replace( '/\D/' , '' , $inStr )/100;
  }
  return (int) preg_replace( '/\D/' , '' , $inStr );
}

如果有2位小数,我们将删除所有非数字字符,然后除以100(从而替换小数)。 如果没有2位小数,我们只删除所有非数字字符。

答案 2 :(得分:1)

假设您只使用美元和欧元(或磅或其他任何具有两位小数的数字,最简单的解决方案是:

var value = str_replace('€','',$this->value);

if (substr($value,str_len($value)-3,1)=='.') {
  // first format
}
else if (substr($value,str_len($value)-3,1)==',') {
  // second format
}
else {
  // unsupported
}

否则,您必须设置一个循环,逐个遍历字符,或根据货币确定返回的位数。