You are here

public static function Input::parseAmountDecimalSeparator in Currency 7.2

Parses an amount's decimal separator.

Parameters

string $amount: Any optionally localized numeric value.

Return value

string The amount with its decimal separator replaced by a period.

Throws

AmountInvalidDecimalSeparatorException

1 call to Input::parseAmountDecimalSeparator()
Input::parseAmount in currency/vendor/bartfeenstra/currency/src/BartFeenstra/Currency/Input.php
Parses an amount.

File

currency/vendor/bartfeenstra/currency/src/BartFeenstra/Currency/Input.php, line 59
Contains class \BartFeenstra\Currency\Input.

Class

Input
Helpers for parsing user input.

Namespace

BartFeenstra\Currency

Code

public static function parseAmountDecimalSeparator($amount) {
  $decimal_separator_counts = array();
  foreach (self::$decimalSeparators as $decimal_separator) {
    $decimal_separator_counts[$decimal_separator] = \mb_substr_count($amount, $decimal_separator);
  }
  $decimal_separator_counts_filtered = array_filter($decimal_separator_counts);
  if (count($decimal_separator_counts_filtered) > 1 || reset($decimal_separator_counts_filtered) !== FALSE && reset($decimal_separator_counts_filtered) != 1) {
    throw new AmountInvalidDecimalSeparatorException(strtr('The amount can only have no or one decimal separator and it must be one of "decimalSeparators".', array(
      'decimalSeparators' => implode(self::$decimalSeparators),
    )));
  }
  $amount = str_replace(self::$decimalSeparators, '.', $amount);
  return $amount;
}