Filters

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 Laminas\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 provided 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 Laminas\I18n\Filter\NumberParse('de_DE');

echo $filter->filter('1.234.567,891'); // 1234567.8912346
$filter = new Laminas\I18n\Filter\NumberParse();
$filter->setLocale('de_DE');

echo $filter->filter('1.234.567,891'); // 1234567.8912346
Locale::setDefault('de_DE');

$filter = new Laminas\I18n\Filter\NumberParse();

echo $filter->filter('1.234.567,891'); // 1234567.8912346

Note

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 Laminas\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 provided 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 Laminas\I18n\Filter\NumberParse('en_US', NumberFormatter::PERCENT);

echo $filter->filter('80%'); // 0.80

// Example 2
$filter = new Laminas\I18n\Filter\NumberParse('fr_FR', NumberFormatter::SCIENTIFIC);

echo $filter->filter('1,23456789E-3'); // 0.00123456789
// Example 1
$filter = new Laminas\I18n\Filter\NumberParse('en_US');
$filter->setStyle(NumberFormatter::PERCENT);

echo $filter->filter('80%'); // 0.80

// Example 2
$filter = new Laminas\I18n\Filter\NumberParse('fr_FR');
$filter->setStyle(NumberFormatter::SCIENTIFIC);

echo $filter->filter('1,23456789E-3'); // 0.00123456789

Note

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 Laminas\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 Laminas\I18n\Filter\NumberParse(
    'de_DE',
    NumberFormatter::DEFAULT_STYLE,
    NumberFormatter::DECIMAL
);

echo $filter->filter('1.234.567,891'); // 1234567
$filter = new Laminas\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 Laminas\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 Laminas\I18n\Filter\NumberParse();
$filter->setFormatter($formatter);

Note

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 Laminas\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.