Index: core/kernel/utility/formatters/formatter.php =================================================================== --- core/kernel/utility/formatters/formatter.php +++ core/kernel/utility/formatters/formatter.php @@ -63,8 +63,6 @@ */ function TypeCast($value, $options) { - $ret = true; - if ( isset($options['type']) ) { $field_type = $options['type']; @@ -81,20 +79,18 @@ } $value = $this->formatNumber($value); - $type_ok = preg_match('#int|integer|double|float|real|numeric|string#', $field_type); + $is_numeric_type = preg_match('#int|integer|double|float|real#', $field_type); - if ( $value != '' && $type_ok ) { - $ret = is_numeric($value); + if ( $value != '' && $is_numeric_type ) { + $tc_value = $value; + settype($tc_value, $field_type); - if ($ret) { - $f = 'is_' . $field_type; - settype($value, $field_type); - $ret = $f($value); - } + // Type casing is considered a success only, when type casted value visually looks the same. + return (string)$value === (string)$tc_value ? $tc_value : false; } } - return $ret ? $value : false; + return $value; } /**