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

时间:2012-03-08 15:26:53

标签: php arrays

我有这个数组:

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
)

我想创建一个值数组,其中包含下面每个数组值的第一个CN =和之间的值。

我可能必须通过上面的数组循环,执行正则表达式搜索第一次出现的cn及其后面的值

我不确定我做错了什么。

我需要最终结果是一个类似于此的数组:

  

数组('G_Information_Services','WEBadmin','G_ISDept','STAFF');

3 个答案:

答案 0 :(得分:1)

试试这个(不是最有效的方法,但它应该有效):

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);
    }
}

答案 1 :(得分:1)

这获得了数组中每个元素的CN =的第一个值,它也忽略了任何DC =值。

$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);

答案 2 :(得分:1)

对每个数组值使用preg_match以获取仅第一个对应的CN值。

$found = array();

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

<强>输出

Array
(
    [0] => G_Information_Services
    [1] => WEBadmin
    [2] => G_ISDept
    [3] => STAFF
)