Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 读取货币格式_Php_Format_Currency - Fatal编程技术网

Php 读取货币格式

Php 读取货币格式,php,format,currency,Php,Format,Currency,也许对某些人来说这很容易,但我想学习 有两种货币格式: 第一种货币格式是1123123.12,该格式可能类似于1123123.12美元或1123123.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('1123123.12')或

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

有两种货币格式:

第一种货币格式是1123123.12,该格式可能类似于1123123.12美元或1123123.12欧元,以及

第二种货币格式是1.123.123,12,可能是1.123.123,121.123.123,12€,因此区别在于点和逗号的位置

以上格式将被删除

$this->value('one of the currency format insert here');
e、 g.
$this->value('1123123.12')
$this->value('1.123.123,12€')

我想知道的是密码
if(第一种货币格式){use blah..blah..}elseif(第二种货币格式){use blah..blah..}else{//unsupported format}

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

谢谢你的指点和想法

更新: 我为举例的错误道歉

当我尝试测试代码时,我有点困惑,因为它似乎不起作用

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

第一种货币格式1123123.12,该格式可能类似于1123123.12美元1123123.12欧元

第二种货币格式为1.123.123,12,这可能是$1.123.123,121.123.123,12€

然后值['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个字符是什么,如果是“,”或“.”。使用此选项确定您的货币格式

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

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

$value =  "1,123,123.12";
if($value[strlen($value)-3]==',') $currency_format = "A";
else $currency_format="B";
在有2个小数的情况下,我们去掉所有非数字字符,然后除以100(从而替换小数)。 如果没有2个小数,我们就去掉所有非数字字符

在有2个小数的情况下,我们去掉所有非数字字符,然后除以100(从而替换小数)。
如果没有2位小数,我们只需去掉所有非数字字符。

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

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
}

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

假设您只使用美元和欧元(或英镑或任何其他有两个十进制数字的东西),最简单的解决方案是:

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
}


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

有趣的问题。数据从何而来?您能否依赖数据始终保持该格式?因为
1123
1.123
可能不明确:它们是共同的uld的平均值为1123美元,或分别为1.12美元。最好是在输入来自另一个输出代码(回显)的数据时定义输入格式,所以我想确定读取输出时插入的货币格式,谢谢PekkaInteresting问题。数据来自哪里?你能相信数据总是以这种格式存在吗?因为
1123
1.123
可能不明确:它们可能分别意味着1123美元或1.12美元。最好的做法是be定义输入时的输入格式来自另一个输出代码(回显)的数据,因此我想确定读取输出时插入的货币格式,感谢PekkaThis,这取决于始终有两个小数的金额。如果有更多(或更少)的话,它将中断对不起,代码是否也读取小数点分隔符?它的货币格式是否与模式标识?谢谢这取决于金额始终有两个小数点。如果小数点多(或少),它将中断很抱歉,代码是否也读取十进制分隔符?它的货币格式是否与模式标识?谢谢,这是一个很好的解决方案,但如果我读取正确,则不允许有/没有尾随货币字符的实例。@Lucanos,是的。这就是
var value=str_replace('€','.$this->value)
有。您好,我将首先测试它,这似乎是我的条件代码的目的,谢谢您的关注。我对我以前的错误表示歉意,但请让我知道如何解决我的问题,现在我更新了我的问题,请看一看。谢谢您很好的解决方案,但不允许有/没有尾随货币字符的实例,如果我我读对了。@Lucanos,是的。这就是
var value=str_replace('€','$this->value)
有。您好,我将首先测试它,这似乎是我的条件代码的目的,谢谢您的关注。我对我以前的错误表示歉意,但请让我知道如何解决我的问题,现在我更新了我的问题,请看一看。谢谢您,嗯..看起来很有趣,但我如何根据此代码使用上述条件代码/ksHi,我很抱歉,我以前的代码犯了一个小错误,请看一下我的上一个代码,让我知道我能做什么?嗯…似乎很有趣,但我如何使用我的条件代码根据这个代码/很多感谢,我很抱歉,我以前的代码犯了一个小错误,请看一下我的上一个代码,让我知道我能做什么?