我有这个数组:
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');
答案 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
)