[FEATURE] MathUtility: Add canBeInterpretedAsFloat
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Utility / MathUtility.php
index 9b147f8..d4959f5 100644 (file)
@@ -89,6 +89,28 @@ class MathUtility {
                return (string) intval($var) === (string) $var;
        }
 
+       /**
+        * Tests if the input can be interpreted as float.
+        *
+        * Note: Float casting from objects or arrays is considered undefined and thus will return false.
+        *
+        * @see http://www.php.net/manual/en/language.types.float.php, section "Formally" for the notation
+        * @param mixed $var Any input variable to test
+        * @return boolean Returns TRUE if string is a float
+        */
+       static public function canBeInterpretedAsFloat($var) {
+               $pattern_lnum = '[0-9]+';
+               $pattern_dnum = '([0-9]*[\.]' . $pattern_lnum . ')|(' . $pattern_lnum . '[\.][0-9]*)';
+               $pattern_exp_dnum = '[+-]?((' . $pattern_lnum . '|' . $pattern_dnum . ')([eE][+-]?' . $pattern_lnum . ')?)';
+
+               if ($var === '' || is_object($var) || is_array($var)) {
+                       return FALSE;
+               }
+
+               $matches = preg_match('/^' . $pattern_exp_dnum . '$/', $var);
+               return $matches === 1;
+       }
+
        /**
         * Calculates the input by +,-,*,/,%,^ with priority to + and -
         *