Start · Sprachen · PHP · Referenz · ldap_explode_dn

ldap_explode_dn

Funktion

Zerlegt einen LDAP Distinguished Name (DN) in seine einzelnen Komponenten und gibt diese als Array zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

ldap_explode_dn(string $dn, int $with_attrib): array|false

Beschreibung

ldap_explode_dn() trennt einen LDAP Distinguished Name (DN) wie z. B. cn=Max Mustermann,ou=Benutzer,dc=example,dc=com in seine einzelnen RDN-Bestandteile (Relative Distinguished Names) auf. Das Ergebnis ist ein Array, in dem jede Komponente als eigenes Element gespeichert wird.

Der Parameter with_attrib steuert, ob die Attributnamen (z. B. cn=, ou=) in den zurückgegebenen Elementen enthalten bleiben sollen (0) oder ob nur die reinen Werte ohne Attributpräfix zurückgegeben werden sollen (1). Der Eintrag unter dem Schlüssel count enthält immer die Anzahl der gefundenen Komponenten.

Die Funktion ist besonders nützlich, wenn man einzelne Teile eines DN programmatisch auswerten, anzeigen oder weiterverarbeiten möchte, ohne den DN manuell anhand von Kommas zu trennen – was bei DNs mit Sonderzeichen fehleranfällig wäre.

Zu beachten ist, dass ldap_explode_dn() keine echte LDAP-Verbindung benötigt; sie arbeitet rein auf dem übergebenen String. Sie eignet sich daher auch für lokale Vorverarbeitungen ohne aktive Verbindung zu einem LDAP-Server.

Parameter

Name Typ Default Beschreibung
$dn Pflicht string Der zu zerlegende LDAP Distinguished Name, z. B. cn=Max Mustermann,ou=Benutzer,dc=example,dc=com.
$with_attrib Pflicht int Gibt an, ob die Attributnamen in den Ergebnissen enthalten sein sollen. 0 = Attributname und Wert (z. B. cn=Max), 1 = nur der Wert ohne Attributpräfix (z. B. Max).

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array zurück, dessen numerische Schlüssel die einzelnen DN-Bestandteile enthalten. Der Schlüssel count gibt die Anzahl der Elemente an. Im Fehlerfall wird false zurückgegeben.

Beispiele

DN mit Attributnamen zerlegen

<?php
$dn = 'cn=Max Mustermann,ou=Benutzer,dc=example,dc=com';

// with_attrib = 0: Attributname + Wert
$parts = ldap_explode_dn($dn, 0);

print_r($parts);
Array ( [count] => 4 [0] => cn=Max Mustermann [1] => ou=Benutzer [2] => dc=example [3] => dc=com )

DN nur mit Werten (ohne Attributnamen) zerlegen

<?php
$dn = 'cn=Max Mustermann,ou=Benutzer,dc=example,dc=com';

// with_attrib = 1: nur Werte ohne Attributpräfix
$parts = ldap_explode_dn($dn, 1);

print_r($parts);

// Praktische Nutzung: den CN-Wert auslesen
echo 'Benutzername: ' . $parts[0];
Array ( [count] => 4 [0] => Max Mustermann [1] => Benutzer [2] => example [3] => com ) Benutzername: Max Mustermann

// Wichtig · Fallstricke

Sonderzeichen im DN: LDAP-DNs können Sonderzeichen wie Kommas, Gleichheitszeichen oder Backslashes enthalten, die nach RFC 4514 maskiert sind. ldap_explode_dn() berücksichtigt diese Maskierungen und trennt nur an nicht-maskierten Kommas – im Gegensatz zu einem einfachen explode(',', $dn), das zu falschen Ergebnissen führen kann.

Keine LDAP-Verbindung nötig: Die Funktion arbeitet rein lokal auf dem übergebenen String und erfordert keine aktive LDAP-Verbindung oder Ressource.

Rückgabe bei ungültigem DN: Bei einem leeren oder syntaktisch ungültigen DN kann die Funktion false zurückgeben. Es empfiehlt sich, den Rückgabewert stets zu prüfen, bevor auf Array-Elemente zugegriffen wird.