ldap_dn2ufn

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

ldap_dn2ufnConvert DN to User Friendly Naming format

说明

ldap_dn2ufn ( string $dn ) : string|false

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

参数

dn

The distinguished name of an LDAP entity.

返回值

Returns the user friendly name, 或者在失败时返回 false.

User Contributed Notes

naaina at gmail dot com 18-Feb-2005 04:18
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;
  }
?>
alex at netflex dot nl 15-Oct-2002 04:09
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
bryan at apachetoolbox dot com 24-Jul-2001 04:47
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"
bryan at apachetoolbox dot com 24-Jul-2001 04:12
This function will convert "cn=bryan,ou=users,ou=admin,o=apachetoolbox" to "bryan,users,admin,apachetoolbox".