Filters
In This Article
NumberParse
The NumberParse
filter can be used to parse a number from a string. It
acts as a wrapper for the NumberFormatter
class within PHP's
internationalization extension (ext/intl
).
Basic Usage
$filter = new Zend\I18n\Filter\NumberParse();
echo $filter->filter('1.234.567,891'); // 1234567.8912346
By default, if no locale is provided, NumberParse
will use the system locale
provide by PHP's Locale
class and the getDefault()
method.
(The above example assumes that the environment locale is set to de_DE
.)
Using Locale
The locale string used in identifying the characters to filter (locale name,
e.g. en_US
or de_DE
).
$filter = new Zend\I18n\Filter\NumberParse('de_DE');
echo $filter->filter('1.234.567,891'); // 1234567.8912346
$filter = new Zend\I18n\Filter\NumberParse();
$filter->setLocale('de_DE');
echo $filter->filter('1.234.567,891'); // 1234567.8912346
Locale::setDefault('de_DE');
$filter = new Zend\I18n\Filter\NumberParse();
echo $filter->filter('1.234.567,891'); // 1234567.8912346
Notice
After the first filtering, the locale changes will have no effect anymore. Create a new instance of the filter to change the locale.
Get Current Value
To get the current value of this option, use the getLocale()
method.
$filter = new Zend\I18n\Filter\NumberParse('en_US');
echo $filter->getLocale(); // 'en_US'
Default Value
By default, if no locale is provided, NumberParse
will use the system locale
provide by PHP's Locale::getDefault()
.
Using Style
This option sets the style of the parsing; one of the
NumberFormatter
format style constants.
// Example 1
$filter = new Zend\I18n\Filter\NumberParse('en_US', NumberFormatter::PERCENT);
echo $filter->filter('80%'); // 0.80
// Example 2
$filter = new Zend\I18n\Filter\NumberParse('fr_FR', NumberFormatter::SCIENTIFIC);
echo $filter->filter('1,23456789E-3'); // 0.00123456789
// Example 1
$filter = new Zend\I18n\Filter\NumberParse('en_US');
$filter->setStyle(NumberFormatter::PERCENT);
echo $filter->filter('80%'); // 0.80
// Example 2
$filter = new Zend\I18n\Filter\NumberParse('fr_FR');
$filter->setStyle(NumberFormatter::SCIENTIFIC);
echo $filter->filter('1,23456789E-3'); // 0.00123456789
Notice
After the first filtering, the style changes will have no effect anymore. Create a new instance of the filter to change the style.
Get Current Value
To get the current value of this option, use the getStyle()
method.
$filter = new Zend\I18n\Filter\NumberParse();
echo $filter->getStyle(); // 1 (NumberFormatter::DEFAULT_STYLE)
Default Value
The default value of this option is NumberFormatter::DEFAULT_STYLE
.
Using Type
The type speficied the NumberFormatter
parsing type
to use.
$filter = new Zend\I18n\Filter\NumberParse(
'de_DE',
NumberFormatter::DEFAULT_STYLE,
NumberFormatter::DECIMAL
);
echo $filter->filter('1.234.567,891'); // 1234567
$filter = new Zend\I18n\Filter\NumberParse();
$filter->setLocale('de_DE');
$filter->setType(NumberFormatter::DECIMAL);
echo $filter->filter('1.234.567,891'); // 1234567
Get Current Value
To get the current value of this option, use the getType()
method.
$filter = new Zend\I18n\Filter\NumberParse();
echo $filter->getType(); // 3 (NumberFormatter::TYPE_DOUBLE)
Default Value
The default value of this option is NumberFormatter::TYPE_DOUBLE
.
Using Custom NumberFormatter
$formatter = new NumberFormatter('en_US', NumberFormatter::PERCENT);
$filter = new Zend\I18n\Filter\NumberParse();
$filter->setFormatter($formatter);
Notice
If a custom formatter is set, the locale and / or the style changes will have no effect anymore. Set a new number formatter to change the locale and / or the style.
Get Current Value
To get the current value of this option, use the getFormatter()
method.
$filter = new Zend\I18n\Filter\NumberParse();
$formatter = $filter->getFormatter(); // instance of `NumberFormatter`
Default Value
The default value of this option is an instance of PHP's NumberFormatter
class.
Created with the current values for locale and style of the filter.
Found a mistake or want to contribute to the documentation? Edit this page on GitHub!