2016-05-24 3 views
1

のOU値を取得しますが、取得する方法を理解していません。PHPのLDAPは</p> <p><code>dn: uid=john,ou=grp1,ou=people,dc=site,dc=com</code>から私は<code>ou=grp1</code>として値を取得するためのコードの下にしようとしているDN

<?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> 

がここに出力を見つける:ここ

がコードされているのでoudchttps://ideone.com/rE6eaH

答えて

1

は、複数の値を持っているかもしれませんが、あなたは中にこれらの値を格納する必要がありますアレイ。これにより、データに簡単にアクセスできます。このコードをチェックアウト:

<?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 
     ) 
) 
関連する問題