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.NumberFormatter::parseCurrency
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
NumberFormatter::parseCurrency
Референца за `numberformatter.parsecurrency.php` со подобрена типографија и навигација.
NumberFormatter::parseCurrency
numfmt_parse_currency
Класата Collator
NumberFormatter::parseCurrency -- numfmt_parse_currency — Парсирај број на валута
= NULL
Напиши целосна ознака на елемент
$string, string &$currency, int &$offset = null): float|falseПроцедурален стил
NumberFormatter
$formatter,string
$string,string
&$currency,int
&$offset = null): float|false
Парсирај стринг во float и валута користејќи го тековниот форматер.
Параметри
formatter-
NumberFormatter object.
currency-
Параметар за примање на името на валутата (3-буквен ISO 4217 код на валута).
offset-
Позиција во стрингот од каде да се започне со парсирање. При враќање, оваа вредност ќе ја задржи позицијата каде заврши парсирањето.
Вратени вредности
Парсирана нумеричка вредност или false при грешка.
Примери
Пример #1 numfmt_parse_currency() example
<?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";
?>Пример #2 OO пример
<?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";
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
We have 1234567.89 in USD
Види Исто така
- numfmt_get_error_code() - Земете атрибут
- numfmt_parse() - Земете текстуален атрибут
- numfmt_format_currency() - Форматирајте број