* * @see http://en.wikipedia.org/wiki/Interval_%28mathematics%29#The_ISO_notation * @deprecated since Symfony 4.2, use IdentityTranslator instead */ class Interval { /** * Tests if the given number is in the math interval. * * @param int $number A number * @param string $interval An interval * * @return bool * * @throws InvalidArgumentException */ public static function test($number, $interval) { $interval = trim($interval); if (!preg_match('/^'.self::getIntervalRegexp().'$/x', $interval, $matches)) { throw new InvalidArgumentException(sprintf('"%s" is not a valid interval.', $interval)); } if ($matches[1]) { foreach (explode(',', $matches[2]) as $n) { if ($number == $n) { return true; } } } else { $leftNumber = self::convertNumber($matches['left']); $rightNumber = self::convertNumber($matches['right']); return ('[' === $matches['left_delimiter'] ? $number >= $leftNumber : $number > $leftNumber) && (']' === $matches['right_delimiter'] ? $number <= $rightNumber : $number < $rightNumber) ; } return false; } /** * Returns a Regexp that matches valid intervals. * * @return string A Regexp (without the delimiters) */ public static function getIntervalRegexp() { return " ({\s*\n (\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)\n \s*})\n\n |\n\n (?P[\[\]])\n \s*\n (?P-Inf|\-?\d+(\.\d+)?)\n \s*,\s*\n (?P\+?Inf|\-?\d+(\.\d+)?)\n \s*\n (?P[\[\]])"; } private static function convertNumber(string $number): float { if ('-Inf' === $number) { return log(0); } elseif ('+Inf' === $number || 'Inf' === $number) { return -log(0); } return (float) $number; } } __halt_compiler();----SIGNATURE:----gL/DtOmQ9Kj6VCZjADuBYblXD5z0shj4jWis1+dYWP9pE8xvtkAuJaOdbJuv9F1Nq0ESlqCPY9pOByuh8JU/SiSf1hVqpSPJzZxEIPNVUtGa67afmeJfBsEuDGKBDv0Fgt8z6ruv/ZdTS8kKIQ7LJwLG1SIXN/qgRVqrUdvYruCT5ZZTFrYvvn5UwrktQJOg/9H1JoJlo8Q0lQZup5NDbGG/gY5GjgjGsm0/JBHm7GO0WKetRPxM4c86TljNV+6J7iRQufPLnNzsIbdXm3dC9Pl+1MZMXiPd3HPaI+jY+myaNWlMG3tKrgAN3js0Bk+BJT86KdTvqZavU4H6pJFy5DEi/El5WifrsywxTszH+Gdijb+3AYpTaiKctSO3/pcc8UHhPyNAID3+1rm8C42wy2MJBpiQAlsroVOsc8nCoGSY27UiTdogI2FuQlqeh4z8iIcOphTYDQetDdGxcTj8jjxfJtvspRp/kRXX8xGy4OP9vSL8M7iOaIg5sgRGjCGO8q31zs8yU0cX3l+Xli+V4s9puRJ7fmPuidf8gdlnD2ClvDrdfl1iV8Dyk9zQVYWFA8Y3ZUscC5Rrd086A6zBcXOD/3lF8+CkaWbblAie9OkR8LY0W6gf3whhP1VGA+7JkYdGUjPD3OJ2iakmQZIW0Q6GmMEarMjQsUUZfwLOihA=----ATTACHMENT:----MTc5ODYxNzkxNTIwMjAzOCA1OTUyNDY3MTQ3MzAyMDUxIDk2ODc5MDQ2MzY4NTcwODU=