dongqiao8417
dongqiao8417
2012-03-08 15:26
浏览 23
已采纳

需要在数组的每个字符串中搜索值以构造另一个数组

I have this array:

Array
(
    [count] => 12
    [6] => CN=G_Information_Services,CN=Users,DC=hccc,DC=campus
    [7] => CN=WEBadmin,CN=Users,DC=hccc,DC=campus
    [9] => CN=G_ISDept,CN=Users,DC=hccc,DC=campus
    [10] => CN=STAFF,CN=Users,DC=hccc,DC=campus
)

and I want to create an array of values that consist of the value between the first CN= and , of each array value below.

I probably will have to loop thru the array above, do a regex search for the first occurrence of cn and the value that follows it

I am not sure what I am doing wrong.

I need the final result to be an array that resembles this:

array('G_Information_Services', 'WEBadmin', 'G_ISDept', 'STAFF');

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dsfh40613182
    dsfh40613182 2012-03-08 15:49
    已采纳

    Use preg_match on each of the array values to get only the first corresponding CN value.

    $found = array();
    
    foreach ($arr AS $values) {
        if (preg_match('/CN=([^,]+),/',$values,$matches))
            $found[] = $matches[1];
    }
    

    Output

    Array
    (
        [0] => G_Information_Services
        [1] => WEBadmin
        [2] => G_ISDept
        [3] => STAFF
    )
    
    点赞 评论
  • dsadasd12132
    dsadasd12132 2012-03-08 15:33

    Try this (not the most efficient way but it should work):

    foreach ($array as $key => $value)
    {
        if (is_numeric($key))
        {
            $array[$key] = explode(',', $array[$key]);
            $array[$key] = $array[$key][0];
            $array[$key] = substr($array[$key], 3);
        }
    }
    
    点赞 评论
  • dow56114
    dow56114 2012-03-08 15:39

    This gets the first value of CN= of each element of the array, it also ignores any DC= values.

    $arr = array(
        'count' => 12,
        6 => 'CN=G_Information_Services,CN=Users,DC=hccc,DC=campus',
        7 => 'CN=WEBadmin,CN=Users,DC=hccc,DC=campus',
        9 => 'CN=G_ISDept,CN=Users,DC=hccc,DC=campus',
        10 => 'CN=STAFF,CN=Users,DC=hccc,DC=campus'
    );
    
    $newArr = array();
    
    foreach($arr as $key => $value)
    {
        if($key != 'count')
        {
            $temp = explode(',', $value);
    
            foreach($temp as $item)
            {
                if(strpos($item, 'CN=') === 0)
                {
                    $item = substr($item, 3 );
                    $newArr[] = $item;
                    break 1;
                }
            }
        }
    }
    
    print_r($newArr);
    
    点赞 评论

相关推荐