unescapeFilterValue() public static method

Reverses the conversion done by {@link escapeFilterValue()}. Converts any sequences of a backslash followed by two hex digits into the corresponding character.
public static unescapeFilterValue ( array $values = [] ) : array
$values array Values to unescape.
return array Unescaped values.
Beispiel #1
0
 /**
  * Test unescaping of filter values.
  */
 public function testUnescapeFilterValue()
 {
     $expected = 't(e,s)t*v\\al' . chr(30) . 'ue';
     $filterval = 't\\28e,s\\29t\\2av\\5cal\\1eue';
     // String call
     $this->assertEquals(array($expected), Horde_Ldap_Util::unescapeFilterValue($filterval));
     // Array call.
     $this->assertEquals(array($expected), Horde_Ldap_Util::unescapeFilterValue(array($filterval)));
     // Multiple arrays.
     $this->assertEquals(array($expected, $expected, $expected), Horde_Ldap_Util::unescapeFilterValue(array($filterval, $filterval, $filterval)));
 }
Beispiel #2
0
 /**
  * Parse LDAP filter.
  * Partially derived from Net_LDAP_Filter.
  *
  * @param string $filter The filter string.
  *
  * @return array An array of the parsed filter.
  *
  * @throws Horde_Kolab_Server_Exception If parsing the filter expression
  *                                      fails.
  */
 public function parse($filter)
 {
     $result = array();
     if (preg_match('/^\\((.+?)\\)$/', $filter, $matches)) {
         if (in_array(substr($matches[1], 0, 1), array('!', '|', '&'))) {
             $result['op'] = substr($matches[1], 0, 1);
             $result['sub'] = $this->parseSub(substr($matches[1], 1));
             return $result;
         } else {
             if (stristr($matches[1], ')(')) {
                 throw new Horde_Kolab_Server_Exception('Filter parsing error: invalid filter syntax - multiple leaf components detected!');
             } else {
                 $filter_parts = preg_split('/(?<!\\\\)(=|=~|>|<|>=|<=)/', $matches[1], 2, PREG_SPLIT_DELIM_CAPTURE);
                 if (count($filter_parts) != 3) {
                     throw new Horde_Kolab_Server_Exception('Filter parsing error: invalid filter syntax - unknown matching rule used');
                 } else {
                     $result['att'] = $filter_parts[0];
                     $result['log'] = $filter_parts[1];
                     $val = Horde_Ldap_Util::unescapeFilterValue($filter_parts[2]);
                     $result['val'] = $val[0];
                     return $result;
                 }
             }
         }
     } else {
         throw new Horde_Kolab_Server_Exception(sprintf("Filter parsing error: %s - filter components must be enclosed in round brackets", $filter));
     }
 }