PHP Conference Nagoya 2025

ldap_dn2ufn

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_dn2ufnConvertit un DN en format UFN (User Friendly Naming)

Description

ldap_dn2ufn(string $dn): string|false

Convertit le DN dn dans un format plus lisible humainement, en supprimant les types des noms.

Liste de paramètres

dn

Le DN de l'entrée LDAP.

Valeurs de retour

Retourne l'UFN, ou false si une erreur survient.

add a note

User Contributed Notes 4 notes

up
6
bryan at apachetoolbox dot com
23 years ago
This function will convert "cn=bryan,ou=users,ou=admin,o=apachetoolbox" to "bryan,users,admin,apachetoolbox".
up
-1
alex at netflex dot nl
22 years ago
The function of bryan will only work if you start with an Organization and using only an Organizational Unit as a container and the object is an CN.

For example:

$DN = "CN=DNS,CN=Authorized Login Methods,CN=Security";

echo ($DN = ldap_dn2ufn($DN)) . "\n";

echo ($DN = ldap_ufn2dn($DN)) . "\n";

will echo:

DNS,Authorized Login Methods,Security

CN=DNS,OU=Authorized Login Methods,O=Security
up
-1
bryan at apachetoolbox dot com
23 years ago
function ldap_unf2dn($unf,$delimeter=".") {
$seperated = explode($delimeter,$unf); //split the unf up by the given delimeter
$LastKey=count($seperated)-1; //0 is the first key to total-1 would be the last key
foreach($seperated as $key => $value) {
if ($key == 1) { //first variable is the CN
$dn="${dn}cn=$value,";
} elseif ($key == $LastKey) { //last variable, so it's the O
$dn="${dn}o=$value";
} elseif ($value == "") { //value is blank, so continue
continue;
} else { //just a typical OU
$dn="${dn}ou=$value,";
}

};
return $dn;

}

$unf=".bryan.users.admin.apachetoolbox";
$dn=ldap_unf2dn($unf);
print "$dn" // will give me "cn=bryan,ou=users,ou=TS,o=apachetoolbox"
up
-2
naaina at gmail dot com
19 years ago
Don't know if anyone is interested in this, but this is a modified and more dynamic version of the posting below. Since ldap_dn2ufn takes ',' as delimiter for the UFNs, we'll also use it here. $pHowToBuild specifies, how the DN is going to be build.

Short example:

$myUFN = ldap_dn2ufn("cn=naaina, ou=container1, ou=container2, ou=container3, o=private, c=de");
echo $myUFN . "\n"; // will return "naaina, container1, container2, container3, private, de"

$myDN = $ldapObject->conv_ufn2dn($myUFN);
echo $myDN . "\n"; // will return "cn=naaina,ou=container1,ou=container2,ou=container3,o=private,c=de"

For the object name, $pHowToBuild["object"] is going to be used as prefix - for containers $pHowToBuild["container"] and for the last n elements $pHowToBuild["last"].

<?php
function ldap_ufn2dn (
$pUFN,
$pDelimiter = ",",
$pHowToBuild = array(
"object" => "cn",
"container" => "ou",
"last" => array("o", "c")
)
)
{
$resultDN = null;

if(!empty(
$pUFN)) {
/* Check $pHowToBuild */
if(is_array($pHowToBuild)) {
/* Check if required keys are existent */
if(array_key_exists("object", $pHowToBuild) &&
array_key_exists("container", $pHowToBuild) &&
array_key_exists("last", $pHowToBuild))
{
$ufnArray = explode($pDelimiter, $pUFN);
$ufnLast = count($ufnArray) - count($pHowToBuild["last"]);

/* Remove empty values */
foreach($ufnArray as $objKey => $objVal)
if(empty(
$objVal))
array_splice($ufnArray, $objKey, 1);

/* Now build the DN ... */
foreach($ufnArray as $objKey => $objVal) {
$objVal = trim($objVal);

if(
$objKey == 0) {
/* For the object */
$resultDN .= $pHowToBuild["object"] . "=" . $objVal . ",";
} elseif (
$objKey >= $ufnLast) {
/* For last parts of the DN */
$resultDN .= $pHowToBuild["last"][$objKey - $ufnLast] . "=" . $objVal;
if((
$objKey - $ufnLast - 1) != 0) {
$resultDN .= ",";
}
} else {
/* For containers */
$resultDN .= $pHowToBuild["container"] . "=" . $objVal . ",";
}
}
}
}
}

return
$resultDN;
}
?>
To Top