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


need to search for values in each string of an array to construct another 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
)

我想创建一个值数组,它由下面每个数组值的第一个CN=和之间的值组成。

我可能必须循环遍历上面的数组,用正则表达式搜索cn的第一个出现和它后面的值

我不确定我做错了什么。

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

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

对每个数组值使用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
)

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

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

这会获取数组中每个元素的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);