PHP 8.5.0 Released!

ldap_dn2ufn

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

ldap_dn2ufnConvert DN to User Friendly Naming format

Description

ldap_dn2ufn(string $dn): string |false

Turns the specified dn, into a more user-friendly form, stripping off type names.

Parameters

dn

The distinguished name of an LDAP entity.

Return Values

Returns the user friendly name, or false on failure.

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 4 notes

up
6
bryan at apachetoolbox dot com
24 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
23 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
24 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
20 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;
 }
?>
+add a note

AltStyle によって変換されたページ (->オリジナル) /