123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500 |
- <?php
- /**
- * Number formatter class - locale-dependent number formatting/parsing.
- *
- * This class represents the ICU number formatting functionality. It allows to display
- * number according to the localized format or given pattern or set of rules, and to
- * parse strings into numbers according to the above patterns.
- *
- * Example:
- * <code>
- * $value = 1234567;
- * $formatter = new NumberFormatter("de_DE", NumberFormatter::DECIMAL);
- * echo $formatter->format($value);
- * </code>
- *
- * @see http://www.icu-project.org/apiref/icu4c/unum_8h.html
- * @see http://www.icu-project.org/apiref/icu4c/classNumberFormat.html
- *
- * The class would also contain all the constants listed in the following enums:
- * UNumberFormatStyle, UNumberFormatRoundingMode, UNumberFormatPadPosition,
- * UNumberFormatAttribute, UNumberFormatTextAttribute, UNumberFormatSymbol.
- */
- class NumberFormatter {
- #############################################################################
- # Common constants.
- #############################################################################
- /*
- * WARNING:
- * The values described here are NOT the actual values in PHP code.
- * They are references to the ICU C definitions, so the line
- * const PATTERN_DECIMAL = 'UNUM_PATTERN_DECIMAL';
- * actually means that NumberFormatter::PATTERN_DECIMAL is the same as
- * UNUM_PATTERN_DECIMAL constant in the ICU library.
- */
- /*
- * These constants define formatter/parser argument type - integer, floating point or currency.
- */
- const TYPE_DEFAULT = 'FORMAT_TYPE_DEFAULT';
- const TYPE_INT32 = 'FORMAT_TYPE_INT32';
- const TYPE_INT64 = 'FORMAT_TYPE_INT64';
- const TYPE_DOUBLE = 'FORMAT_TYPE_DOUBLE';
- const TYPE_CURRENCY = 'FORMAT_TYPE_CURRENCY';
- /*
- * UNumberFormatStyle constants
- */
- const PATTERN_DECIMAL = 'UNUM_PATTERN_DECIMAL';
- const DECIMAL = 'UNUM_DECIMAL';
- const CURRENCY = 'UNUM_CURRENCY';
- const PERCENT = 'UNUM_PERCENT';
- const SCIENTIFIC = 'UNUM_SCIENTIFIC';
- const SPELLOUT = 'UNUM_SPELLOUT';
- const ORDINAL = 'UNUM_ORDINAL';
- const DURATION = 'UNUM_DURATION';
- const PATTERN_RULEBASED = 'UNUM_PATTERN_RULEBASED';
- const DEFAULT = 'UNUM_DEFAULT';
- const IGNORE = 'UNUM_IGNORE';
- /*
- * UNumberFormatRoundingMode
- */
- const ROUND_CEILING = 'UNUM_ROUND_CEILING';
- const ROUND_FLOOR = 'UNUM_ROUND_FLOOR';
- const ROUND_DOWN = 'UNUM_ROUND_DOWN';
- const ROUND_UP = 'UNUM_ROUND_UP';
- const ROUND_HALFEVEN = 'UNUM_ROUND_HALFEVEN';
- const ROUND_HALFDOWN = 'UNUM_ROUND_HALFDOWN';
- const ROUND_HALFUP = 'UNUM_ROUND_HALFUP';
- /*
- * UNumberFormatPadPosition
- */
- const PAD_BEFORE_PREFIX = 'UNUM_PAD_BEFORE_PREFIX';
- const PAD_AFTER_PREFIX = 'UNUM_PAD_AFTER_PREFIX';
- const PAD_BEFORE_SUFFIX = 'UNUM_PAD_BEFORE_SUFFIX';
- const PAD_AFTER_SUFFIX = 'UNUM_PAD_AFTER_SUFFIX';
- /*
- * UNumberFormatAttribute
- */
- const PARSE_INT_ONLY = 'UNUM_PARSE_INT_ONLY';
- const GROUPING_USED = 'UNUM_GROUPING_USED';
- const DECIMAL_ALWAYS_SHOWN = 'UNUM_DECIMAL_ALWAYS_SHOWN';
- const MAX_INTEGER_DIGITS = 'UNUM_MAX_INTEGER_DIGITS';
- const MIN_INTEGER_DIGITS = 'UNUM_MIN_INTEGER_DIGITS';
- const INTEGER_DIGITS = 'UNUM_INTEGER_DIGITS';
- const MAX_FRACTION_DIGITS = 'UNUM_MAX_FRACTION_DIGITS';
- const MIN_FRACTION_DIGITS = 'UNUM_MIN_FRACTION_DIGITS';
- const FRACTION_DIGITS = 'UNUM_FRACTION_DIGITS';
- const MULTIPLIER = 'UNUM_MULTIPLIER';
- const GROUPING_SIZE = 'UNUM_GROUPING_SIZE';
- const ROUNDING_MODE = 'UNUM_ROUNDING_MODE';
- const ROUNDING_INCREMENT = 'UNUM_ROUNDING_INCREMENT';
- const FORMAT_WIDTH = 'UNUM_FORMAT_WIDTH';
- const PADDING_POSITION = 'UNUM_PADDING_POSITION';
- const SECONDARY_GROUPING_SIZE = 'UNUM_SECONDARY_GROUPING_SIZE';
- const SIGNIFICANT_DIGITS_USED = 'UNUM_SIGNIFICANT_DIGITS_USED';
- const MIN_SIGNIFICANT_DIGITS = 'UNUM_MIN_SIGNIFICANT_DIGITS';
- const MAX_SIGNIFICANT_DIGITS = 'UNUM_MAX_SIGNIFICANT_DIGITS';
- const LENIENT_PARSE = 'UNUM_LENIENT_PARSE';
- /*
- * UNumberFormatTextAttribute
- */
- const POSITIVE_PREFIX = 'UNUM_POSITIVE_PREFIX';
- const POSITIVE_SUFFIX = 'UNUM_POSITIVE_SUFFIX';
- const NEGATIVE_PREFIX = 'UNUM_NEGATIVE_PREFIX';
- const NEGATIVE_SUFFIX = 'UNUM_NEGATIVE_SUFFIX';
- const PADDING_CHARACTER = 'UNUM_PADDING_CHARACTER';
- const CURRENCY_CODE = 'UNUM_CURRENCY_CODE';
- const DEFAULT_RULESET = 'UNUM_DEFAULT_RULESET';
- const PUBLIC_RULESETS = 'UNUM_PUBLIC_RULESETS';
- /*
- * UNumberFormatSymbol
- */
- const DECIMAL_SEPARATOR_SYMBOL = 'UNUM_DECIMAL_SEPARATOR_SYMBOL';
- const GROUPING_SEPARATOR_SYMBOL = 'UNUM_GROUPING_SEPARATOR_SYMBOL';
- const PATTERN_SEPARATOR_SYMBOL = 'UNUM_PATTERN_SEPARATOR_SYMBOL';
- const PERCENT_SYMBOL = 'UNUM_PERCENT_SYMBOL';
- const ZERO_DIGIT_SYMBOL = 'UNUM_ZERO_DIGIT_SYMBOL';
- const DIGIT_SYMBOL = 'UNUM_DIGIT_SYMBOL';
- const MINUS_SIGN_SYMBOL = 'UNUM_MINUS_SIGN_SYMBOL';
- const PLUS_SIGN_SYMBOL = 'UNUM_PLUS_SIGN_SYMBOL';
- const CURRENCY_SYMBOL = 'UNUM_CURRENCY_SYMBOL';
- const INTL_CURRENCY_SYMBOL = 'UNUM_INTL_CURRENCY_SYMBOL';
- const MONETARY_SEPARATOR_SYMBOL = 'UNUM_MONETARY_SEPARATOR_SYMBOL';
- const EXPONENTIAL_SYMBOL = 'UNUM_EXPONENTIAL_SYMBOL';
- const PERMILL_SYMBOL = 'UNUM_PERMILL_SYMBOL';
- const PAD_ESCAPE_SYMBOL = 'UNUM_PAD_ESCAPE_SYMBOL';
- const INFINITY_SYMBOL = 'UNUM_INFINITY_SYMBOL';
- const NAN_SYMBOL = 'UNUM_NAN_SYMBOL';
- const SIGNIFICANT_DIGIT_SYMBOL = 'UNUM_SIGNIFICANT_DIGIT_SYMBOL';
- const MONETARY_GROUPING_SEPARATOR_SYMBOL = 'UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL';
- /**
- * Create a number formatter
- *
- * Creates a number formatter from locale and pattern. This formatter would be used to
- * format or parse numbers.
- *
- * @param integer $style Style of the formatting, one of the UNumberFormatStyle constants
- * @param string $locale Locale in which the number would be formatted
- * @param [string] $pattern Pattern string in case chose style requires pattern
- * @return NumberFormatter
- */
- public function __construct($locale, $style, $pattern = null) {}
- /**
- * Create a number formatter
- *
- * Creates a number formatter from locale and pattern. This formatter would be used to
- * format or parse numbers.
- *
- * This method is useful when you prefer just to get null on error,
- * as if you called numfmt_create().
- *
- * @param integer $style Style of the formatting, one of the UNumberFormatStyle constants
- * @param string $locale Locale in which the number would be formatted
- * @param [string] $pattern Pattern string in case chose style requires pattern
- * @return NumberFormatter
- * @see __construct
- * @see numfmt_create
- */
- public static function create($locale, $style, $pattern = null) {}
- /**
- * Format a number according to current formatting rules.
- *
- * If the type is not specified, the type is derived from the $number parameter. I.e., if it's
- * integer then INT32 would be chosen on 32-bit, INT64 on 64-bit, if it's double, DOUBLE would be
- * chosen. It is possible to format 64-bit number on 32-bit machine by passing it as double and using
- * TYPE_INT64.
- * When formatting currency, default formatter's currency code is used.
- *
- * @param integer|double $number Number to format
- * @param [integer] $type Type of the formatting - one of TYPE constants. If not specified, default for the type.
- * @return string formatted number
- */
- public function format($number, $type = 0) {}
- /**
- * Parse a number according to current formatting rules.
- *
- * @param string $string String to parse
- * @param [integer] $type Type of the formatting - one of TYPE constants.
- * TYPE_DOUBLE is used by default.
- * @param [integer] $position On input, the position to start parsing, default is 0;
- * on output, moved to after the last successfully parse character;
- * on parse failure, does not change.
- * @return integer|double|false Parsed number, false if parsing failed
- */
- public function parse($string, $type, &$position) {}
- /**
- * Format number as currency.
- *
- * Uses user-defined currency string.
- *
- * @param double $number Number to format
- * @param string $currency 3-letter currency code (ISO 4217) to use in format
- */
- public function formatCurrency($number, $currency) {}
- /**
- * Parse currency string
- *
- * This parser would use parseCurrency API string to parse currency string. The format is defined by the
- * formatter, returns both number and currency code.
- *
- * @param string $string String to parse
- * @param string $currency Parameter to return parsed currency code
- * @param [integer] $position On input, the position within text to match, default is 0;
- * on output, the position after the last matched character;
- * on parse failure, does not change.
- * @return double currency number
- */
- public function parseCurrency($string, &$currency, &$position) {}
- /**
- * Set formatter attribute.
- *
- * This function is used to set any of the formatter attributes. Example:
- *
- * $formatter->setAttribute(NumberFormat::FORMAT_WIDTH, 10);
- *
- * @param integer $attr One of UNumberFormatAttribute constants
- * @param integer|double $value Value of the attribute
- * @return false if attribute is unknown or can not be set, true otherwise
- */
- public function setAttribute($attr, $value) {}
- /**
- * Set formatter attribute.
- *
- * This function is used to set any of the formatter attributes. Example:
- *
- * $formatter->setTextAttribute(NumberFormat::POSITIVE_PREFIX, "+");
- *
- * @param integer $attr One of UNumberFormatTextAttribute constants
- * @param string $value Value of the attribute
- * @return false if attribute is unknown or can not be set, true otherwise
- */
- public function setTextAttribute($attr, $value) {}
- /**
- * Set formatting symbol.
- *
- * Example:
- *
- * $formatter->setSymbol(NumberFormat::EXPONENTIAL_SYMBOL, "E");
- *
- * @param integer|array $attr One of UNumberFormatSymbol constants or array of symbols, indexed by
- * these constants
- * @param string $value Value of the symbol
- */
- public function setSymbol($attr, $value) {}
- /**
- * Set pattern used by the formatter
- *
- * Valid only if the formatter is using pattern and is not rule-based.
- * @see http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html
- * Localized patterns are not currently supported.
- *
- * @param string $pattern The pattern to be used.
- * @return boolean false if formatter pattern could not be set, true otherwise
- */
- public function setPattern($pattern) {}
- /**
- * Get value of the formatter attribute
- *
- * @param integer $attr One of UNumberFormatAttribute constants
- * @return integer|double value of the attribute or false if the value can not be obtained
- */
- public function getAttribute($attr) {}
- /**
- * Get value of the formatter attribute
- *
- * @param integer $attr One of UNumberFormatTextAttribute constants
- * @return string value of the attribute or false if the value can not be obtained
- */
- public function getTextAttribute($attr) {}
- /**
- * Get value of the formatter symbol
- *
- * @param integer $attr One of UNumberFormatSymbol constants specifying the symbol
- * @return string|false The symbol value, or false if the value can not be obtained
- */
- public function getSymbol($attr) {}
- /**
- * Get pattern used by the formatter.
- *
- * Gets current state of the formatter as a pattern.
- * Localized patterns are not currently supported.
- *
- * Valid only if the formatter is UNUM_PATTERN_DECIMAL
- * @return string|false The pattern used by the formatter or false if formatter is of a type
- * that does not support patterns.
- */
- public function getPattern() {}
- /**
- * Get the locale for which the formatter was created.
- *
- * @param [integer] $type One of ULocDataLocaleType values
- * @return string locale name
- */
- public function getLocale($type = 0) {}
- /**
- * Get the error code from last operation
- *
- * Returns error code from the last number formatting operation.
- *
- * @return integer the error code, one of UErrorCode values. Initial value is U_ZERO_ERROR.
- */
- public function getErrorCode() {}
- /**
- * Get the error text from the last operation.
- *
- * @return string Description of the last occurred error.
- */
- public public function getErrorMessage() {}
- }
- /** Now the same as procedural API */
- /**
- * Create a number formatter
- *
- * Creates a number formatter from locale and pattern. This formatter would be used to
- * format or parse numbers.
- *
- * @param string $locale Locale in which the number would be formatted
- * @param integer $style Style of the formatting, one of the UNumberFormatStyle constants
- * @param [string] $pattern Pattern string in case chose style requires pattern
- * @return Numberformatter resource NumberFormatter
- */
- function numfmt_create($locale, $style, $pattern = null) {}
- /**
- * Format a number according to current formatting rules.
- *
- * If the type is not specified, the type is derived from the $number parameter. I.e., if it's
- * integer then INT32 would be chosen on 32-bit, INT64 on 64-bit, if it's double, DOUBLE would be
- * chosen. It is possible to format 64-bit number on 32-bit machine by passing it as double and using
- * TYPE_INT64.
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param integer|double $number Number to format
- * @param [integer] $type Type of the formatting - one of TYPE constants. If not specified, default for the type.
- * @return string formatted number
- */
- function numfmt_format($formatter, $number, $type = null) {}
- /**
- * Parse a number according to current formatting rules.
- *
- * This parser uses DOUBLE type by default. When parsing currency,
- * default currency definitions are used.
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param string $string String to parse
- * @param [integer] $type Type of the formatting - one of TYPE constants.
- * @param [integer] $position String position after the end of parsed data.
- * @return integer|double|false Parsed number, false if parsing failed
- */
- function numfmt_parse($formatter, $string, $type, &$position) {}
- /**
- * Format number as currency.
- *
- * Uses user-defined currency string.
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param double $number Number to format
- * @param string $currency 3-letter currency code (ISO 4217) to use in format
- */
- function numfmt_format_currency($formatter, $number, $currency) {}
- /**
- * Parse currency string
- *
- * This parser would use parseCurrency API string to parse currency string. The format is defined by the
- * formatter, returns both number and currency code.
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param string $string String to parse
- * @param string $currency Parameter to return parsed currency code
- * @param [integer] $position String position after the end of parsed data.
- * @return double currency number
- */
- function numfmt_parse_currency($formatter, $string, &$currency, &$position) {}
- /**
- * Set formatter attribute.
- *
- * This function is used to set any of the formatter attributes. Example:
- *
- * numfmt_format_set_attribute($formatter, NumberFormat::FORMAT_WIDTH, 10);
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param integer $attr One of UNumberFormatAttribute constants
- * @param integer|double $value Value of the attribute
- * @return false if attribute is unknown or can not be set, true otherwise
- */
- function numfmt_set_attribute($formatter, $attribute, $value) {}
- /**
- * Set formatter attribute.
- *
- * This function is used to set any of the formatter attributes. Example:
- *
- * numfmt_format_set_text_attribute($formatter, NumberFormat::POSITIVE_PREFIX, "+");
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param integer $attr One of UNumberFormatTextAttribute constants
- * @param string $value Value of the attribute
- * @return false if attribute is unknown or can not be set, true otherwise
- */
- function numfmt_set_text_attribute($formatter, $attribute, $value) {}
- /**
- * Set formatting symbol.
- *
- * Example:
- *
- * $formatter->setSymbol(NumberFormat::EXPONENTIAL_SYMBOL, "E");
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param integer|array $attr One of UNumberFormatSymbol constants or array of symbols,
- * indexed by these constants
- * @param string $value Value of the symbol
- */
- function numfmt_set_symbol($formatter, $attribute, $value) {}
- /**
- * Set pattern used by the formatter
- *
- * Valid only if the formatter is using pattern and is not rule-based.
- * @see http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html
- * Localized patterns are not currently supported.
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param string $pattern The pattern to be used.
- * @return boolean false if formatter pattern could not be set, true otherwise
- */
- function numfmt_set_pattern($formatter, $pattern) {}
- /**
- * Get value of the formatter attribute
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param integer $attribute One of UNumberFormatAttribute constants
- * @return integer|double value of the attribute or false if the value can not be obtained
- */
- function numfmt_get_attribute($formatter, $attribute) {}
- /**
- * Get value of the formatter attribute
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param integer $attribute One of UNumberFormatTextAttribute constants
- * @return string value of the attribute or false if the value can not be obtained
- */
- function numfmt_get_text_attribute($formatter, $attribute) {}
- /**
- * Get value of the formatter symbol
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param integer $attribute One of UNumberFormatSymbol constants specifying the symbol
- * @return string|false The symbol value, or false if the value can not be obtained
- */
- function numfmt_get_symbol($formatter, $attribute) {}
- /**
- * Get pattern used by the formatter.
- *
- * Gets current state of the formatter as a pattern.
- * Localized patterns are not currently supported.
- *
- * Valid only if the formatter is UNUM_PATTERN_DECIMAL
- * @param NumberFormatter $formatter The formatter resource
- * @return string|false The pattern used by the formatter or false if formatter is of a type
- * that does not support patterns.
- */
- function numfmt_get_pattern($formatter) {}
- /**
- * Get the locale for which the formatter was created.
- *
- * @param NumberFormatter $formatter The formatter resource
- * @param [integer] $type One of ULocDataLocaleType values
- * @return string locale name
- */
- function numfmt_get_locale($formatter, $type = 0) {}
- /**
- * Get the error code from last operation
- *
- * Returns error code from the last number formatting operation.
- *
- * @param NumberFormatter $formatter The formatter resource
- * @return integer the error code, one of UErrorCode values. Initial value is U_ZERO_ERROR.
- */
- function numfmt_get_error_code($formatter) {}
- /**
- * Get the error text from the last operation.
- *
- * @param NumberFormatter $formatter The formatter resource
- * @return string Description of the last occurred error.
- */
- function numfmt_get_error_message($formatter) {}
|