Method | Description | |
---|---|---|
asc2hex32 ( string $string ) : string | Converts all ASCII chars < 32 to "\HEX". | |
canonicalDN ( array | string $dn, array $options = [] ) : boolean | string | Converts a DN into a canonical form. | |
escapeDNValue ( string | array $values ) : array | Escapes DN values according to RFC 2253. | |
escapeFilterValue ( array $values ) : array | Escapes the given values according to RFC 2254 so that they can be safely used in LDAP filters. | |
explodeDN ( string $dn, array $options = [] ) : array | Explodes the given DN into its elements | |
hex2asc ( string $string ) : string | Converts all hexadecimal expressions ("\HEX") to their original ASCII characters. | |
splitAttributeString ( string $attr ) : array | Splits a attribute=value syntax into an array. | |
splitRDNMultivalue ( string $rdn ) : array | Splits a multivalued RDN value into an array. | |
unescapeDNValue ( array $values ) : array | Unescapes DN values according to RFC 2253. | |
unescapeFilterValue ( array $values = [] ) : array | Unescapes the given values according to RFC 2254. |
Method | Description | |
---|---|---|
_correctDNSplitting ( array $dn = [], array $separator = ',' ) : array | Corrects splitting of DN parts. |
public static escapeFilterValue ( array $values ) : array | ||
$values | array | Values to escape. |
return | array | Escaped values. |
array(array('OU=Sales', 'CN=J. Smith'),
'DC=example',
'DC=net')
[NOT IMPLEMENTED] DNs might also contain values, which are the bytes of
the BER encoding of the X.500 AttributeValue rather than some LDAP
string syntax. These values are hex-encoded and prefixed with a #. To
distinguish such BER values, explodeDN uses references to the
actual values, e.g. '1.3.6.1.4.1.1466.0=#04024869,DC=example,DC=com' is
exploded to:
array(array('1.3.6.1.4.1.1466.0' => "\004\002Hi"),
array('DC' => 'example',
array('DC' => 'com'))
See {@link http://www.vijaymukhi.com/vmis/berldap.htm} for more
information on BER.
It also performs the following operations on the given DN:
- Unescape "\" followed by ",", "+", """, "\", "<", ">", ";", "#", "=",
" ", or a hexpair and strings beginning with "#".
- Removes the leading 'OID.' characters if the type is an OID instead of
a name.
- If an RDN contains multiple parts, the parts are re-ordered so that
the attribute type names are in alphabetical order.
$options is a list of name/value pairs, valid options are:
- casefold: Controls case folding of attribute types names.
Attribute values are not affected by this option.
The default is to uppercase. Valid values are:
- lower: Lowercase attribute types names.
- upper: Uppercase attribute type names. This is the
default.
- none: Do not change attribute type names.
- reverse: If true, the RDN sequence is reversed.
- onlyvalues: If true, then only attributes values are returned ('foo'
instead of 'cn=foo')
Converts all hexadecimal expressions ("\HEX") to their original ASCII
characters.
The split will occur at the first unescaped '=' character.
public static splitAttributeString ( string $attr ) : array
$attr
string
An attribute-value string.
return
array
Indexed array: 0=attribute name, 1=attribute value.
A RDN can contain multiple values, spearated by a plus sign. This method
returns each separate ocl=value pair of the RDN part.
If no multivalued RDN is detected, an array containing only the original
RDN part is returned.
For example, the multivalued RDN 'OU=Sales+CN=J. Smith' is exploded to:
array([0] => 'OU=Sales', [1] => 'CN=J. Smith')
The method tries to be smart if it encounters unescaped "+" characters,
but may fail, so better ensure escaped "+" in attribute names and
values.
[BUG] If you have a multivalued RDN with unescaped plus characters and
there is a unescaped plus sign at the end of an value followed by
an attribute name containing an unescaped plus, then you will get
wrong splitting:
$rdn = 'OU=Sales+C+N=J. Smith';
returns:
array('OU=Sales+C', 'N=J. Smith');
The "C+" is treaten as the value of the first pair instead of as
the attribute name of the second pair. To prevent this, escape
correctly.
public static splitRDNMultivalue ( string $rdn ) : array
$rdn
string
Part of a (multivalued) escaped RDN (e.g. ou=foo or
ou=foo+cn=bar)
return
array
The components of the multivalued RDN.
Reverts the conversion done by escapeDNValue().
Any escape sequence starting with a baskslash - hexpair or special
character - will be transformed back to the corresponding character.
public static unescapeDNValue ( array $values ) : array
$values
array
DN values.
return
array
Unescaped DN values.
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.