php ldap检索dn的值

时间:2016-05-24 06:30:05

标签: php ldap

我在下面的代码中尝试从

获取ou=grp1的值

dn: uid=john,ou=grp1,ou=people,dc=site,dc=com,但不了解如何检索。

这是代码:

<?php

function pairstr2Arr ($str, $separator='=', $delim=',') {
    $elems = explode($delim, $str);
    foreach( $elems as $elem => $val ) {
        $val = trim($val);
        $nameVal[] = explode($separator, $val);
        $arr[trim(strtolower($nameVal[$elem][0]))] = trim($nameVal[$elem][1]);
    }
        return $arr;
}

//  Example usage:
$string = 'uid=john,ou=grp1,ou=people,dc=site,dc=com';
$array = pairstr2Arr($string);

echo '<pre>';
print_r($array);
echo '</pre>';

?>

输出:

<pre>Array
(
    [uid] => john
    [ou] => people //here I want to get output ou=grp1,how?
    [dc] => com
)
</pre>

在此处查找输出:https://ideone.com/rE6eaH

1 个答案:

答案 0 :(得分:1)

由于oudc可能有多个值,因此您应该将这些值存储在数组中。多亏了你,你可以轻松访问数据。看看这段代码:

<?php

function pairstr2Arr ($str, $separator='=', $delim=',') {
    $elems = explode($delim, $str);

    $arr = array();
    foreach( $elems as $elem => $val ) {
        $val = trim($val);
        $tempArray = explode($separator, $val);

        if(!isset($arr[trim($tempArray[0])]))
            $arr[trim($tempArray[0])] = '';

        $arr[trim($tempArray[0])] .= $tempArray[1].';'; 
    }

    foreach($arr as $key => $value)
    {
        $explodedValue = explode(';', $value);
        if(count($explodedValue) > 2)
        {
            $arr[$key] = $explodedValue;
            unset($arr[$key][count($explodedValue) - 1]);
        }
        else
            $arr[$key] = substr($arr[$key], 0, -1);
    }
    return $arr;
}

//  Example usage:
$string = 'uid=john,ou=grp1,ou=people,dc=site,dc=com';
$array = pairstr2Arr($string);

echo '<pre>';
print_r($array);
echo '</pre>';

?>

结果是:

Array
(
    [uid] => john
    [ou] => Array
        (
            [0] => grp1
            [1] => people
        )

    [dc] => Array
        (
            [0] => site
            [1] => com
        )
)