function isValid($number, $set)
{
$n = preg_match_all($this->validate, $set, $matches, PREG_SET_ORDER);
if ($n < 3) {
throw new Exception("Invalid set \"{$set}\"");
}
if (preg_match('/\\{\\s*n:([^\\}]+)\\}/', $set, $def)) {
return $this->isValidSetNotation($number, $def[1]);
}
$leftBracket = $matches[0][0];
$rightBracket = $matches[$n - 1][0];
$i = 0;
$elements = array();
foreach ($matches as $match) {
$string = $match[0];
if ($i != 0 && $i != $n - 1 && $string !== ',') {
if ($string == '-Inf') {
$elements[] = -1 * $this->inf;
} else {
if ($string == '+Inf' || $string == 'Inf') {
$elements[] = $this->inf;
} else {
$elements[] = floatval($string);
}
}
}
$i++;
}
$total = count($elements);
$number = floatval($number);
if ($leftBracket == '{' && $rightBracket == '}') {
return in_array($number, $elements);
}
$left = false;
if ($leftBracket == '[') {
$left = $number >= $elements[0];
} else {
if ($leftBracket == '(') {
$left = $number > $elements[0];
}
}
$right = false;
if ($rightBracket == ']') {
$right = $number <= $elements[$total - 1];
} else {
if ($rightBracket == ')') {
$right = $number < $elements[$total - 1];
}
}
if ($left && $right) {
return true;
}
return false;
}