/** * An utility function which matches the $value with $limitation * using $op operator. * * The possible operators are: * <ul> * <li>==: true iff $value and $limitation are exactly the same</li> * <li>!=: true iff $value and $limitation are different</li> * <li>=~: true iff $value contains $limitation</li> * <li>!=: true iff $value does not contain $limitation</li> * <li>=x: true iff $value matches regular expression $limitation</li> * <li>!x: true iff $value does not match regular expression $limitation</li> * </ul> * * @param string $value * @param string $limitation * @param string $op * @return boolean True if the $value matches the limitation, * false otherwise. */ function MAX_limitationsMatchStringValue($value, $limitation, $op) { $limitation = strtolower($limitation); $value = strtolower($value); if ($op == '==') { return $limitation == $value; } elseif ($op == '!=') { return $limitation != $value; } elseif ($op == '=~') { return MAX_stringContains($value, $limitation); } elseif ($op == '!~') { return !MAX_stringContains($value, $limitation); } elseif ($op == '=x') { return preg_match(_getSRegexpDelimited($limitation), $value); } else { return !preg_match(_getSRegexpDelimited($limitation), $value); } }
function test_getSRegexpDelimited() { $this->assertEqual('#blablah#', _getSRegexpDelimited('blablah')); $this->assertEqual('#bla\\#blah#', _getSRegexpDelimited('bla#blah')); }