PHP 7.4.24 Released!

NumberFormatter::parseCurrency

numfmt_parse_currency

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

NumberFormatter::parseCurrency -- numfmt_parse_currencyBir para gösteriminin sayısal değeri ile döner

Açıklama

Nesne yönelimli kullanım

public NumberFormatter::parseCurrency(string $dizge, string &$para_simgesi, int &$konum = null): float|false

Yordamsal kullanım

numfmt_parse_currency(
    NumberFormatter $biçemleyici,
    string $dizge,
    string &$para_simgesi,
    int &$konum = null
): float|false

Geçerli biçemleyiciyi kullanarak, bir para dizgesini float türünde bir sayıya ve para birimine dönüştürür.

Değiştirgeler

biçemleyici

NumberFormatter nesnesi.

dizge

Sayıya dönüştürülecek dizge.

para_simgesi

Para biriminin döndürüleceği değiştirge (3 harflik ISO 4217 para birimi).

konum

Çözümlemenin başlatılacağı dizge konumu. İşlev döndüğünde bu değiştirge çözümlemenin bittiği konumu gösterir.

Dönen Değerler

Bir hata oluşursa false, aksi takdirde dönüştürülen sayı değeri döner.

Örnekler

Örnek 1 - numfmt_parse_currency() örneği

<?php
$fmt 
numfmt_create'de_DE'NumberFormatter::CURRENCY );
$num "1.234.567,89\xc2\xa0$";
echo 
"We have ".numfmt_parse_currency($fmt$num$curr)." in $curr\n";
?>

Örnek 2 - Nesne yönelimli kullanım örneği

<?php
$fmt 
= new NumberFormatter'de_DE'NumberFormatter::CURRENCY );
$num "1.234.567,89\xc2\xa0$";
echo 
"We have ".$fmt->parseCurrency($num$curr)." in $curr\n";
?>

Yukarıdaki örneğin çıktısı:

We have 1234567.89 in USD

Ayrıca Bakınız

add a note add a note

User Contributed Notes 2 notes

up
4
info at mm-newmedia dot de
4 years ago
In reply to daniel at danielphenry dot com example note beneath. The given example by Daniel returns false under PHP7.x, which is a normal behavior since NumberFormatter::parseCurrency() is a method for parsing currency strings. It is trying to split up the given string in a float and a currency.

While using strict types under PHP7 the following example makes it more clearer.

<?php
declare(strict_types=1);
namespace
MMNewmedia;

$oParser = new \NumberFormatter('de_DE', \NumberFormatter::CURRENCY);
var_dump($oParser->parseCurrency("1.234.567,89\xc2\xa0€", $currency), $currency));
?>

This example returns: "float(1234567.89) string(3) "EUR"

This is the expected behavior.

The following example runs into a type error, which is absolutely right, since this method is vor parsing strings and not vor formatting floats into currency strings.

<?php
declare(strict_types=1);
namespace
MMNewmedia;

try {
   
$oCurrencyParser = new \NumberFormatter('de_DE', \NumberFormatter::CURRENCY);
   
$currency = 'EUR';
   
var_dump($oCurrencyParser->parseCurrency(1.234, $currency), $currency);
} catch (\
TypeError $oTypeError) {
   
var_dump($oTypeError->getMessage());
}
?>

This example returns "NumberFormatter::parseCurrency() expects parameter 1 to be string, float given".

If you want to parse floats into a currency string use the http://php.net/manual/en/numberformatter.formatcurrency.php method as shown in the next example.

<?php
declare(strict_types=1);
namespace
MMNewmedia;

$oFormatter = new \NumberFormatter('de_DE', \NumberFormatter::CURRENCY);
var_dump($oFormatter->formatCurrency(1234567.89, 'EUR'));
?>

This returns string(17) "1.234.567,89 €" as expected.
up
0
daniel at danielphenry dot com
6 years ago
The given examples confused me a bit. This may be a bit more clear:

$region = 'en_US';
$currency = 'USD';
$formatter = new NumberFormatter($region, NumberFormatter::CURRENCY);
echo $formatter->parseCurrency(12543.67, $currency);

Responds with:

$12,543.67
To Top