我有一个我需要经历的数组,在'='之前取出所有内容,包括'='以及某些单词。然后用','分隔数组的其余内容 以下是数组的内容:$ rows ['role']
$rows['role'][0] = cn=Service Desk Customer,ou=Groups,dc=,dc=co,dc=uk
$rows['role'][1] = cn=User,ou=Groups,dc=,dc=co,dc=uk
$rows['role'][2] = cn=Site Administrator,ou=Groups,ou=Kiev,ou=Ukraine,ou=Euro-Med,dc=,dc=co,dc=uk
$rows['role'][3] = cn=Agent Biometric,ou=Groups,ou=Tirana,ou=Albania,ou=Euro-Med,dc=,dc=co,dc=uk
$rows['role'][4] = cn=Agent Welcome,ou=Groups,ou=Tripoli,ou=Libya,ou=Euro-Med,dc=,dc=co,dc=uk
之后,我需要将结果分为两个阵列,一个用于角色,包括服务台客户,站点管理员等,另一个用于包括的黎波里,利比亚,阿尔巴尼亚。
我想最终得到一个$ roles字符串或数组,它只包含服务台客户,站点管理员等项目。然后是$ location字符串或包含所有位置信息的数组。
这是我到目前为止所拥有的。到目前为止,我能够删除我想删除的所有内容。我遇到的唯一麻烦就是将以cn =开头的项目拉到$ roles变量(最好用cn =删除),将ou =拉到$ locations变量。
$removes = array( 'dc=','ou=Groups','cn=User','dc=co','dc=uk');
$rows[$i] = array(
'picture' => $jpeg,
'first' => $info[$i]["givenname"][0],
'last' => $info[$i]["sn"][0],
'mail' => $info[$i]["mail"][0],
//'role' => $info[$i]["memberof"][0],
);
foreach($info[$i]['memberof'] as $key => $value){
$replace = str_replace($removes,'',$value);
$rows[$i]['role'][$key] = $replace;
}
array_filter($rows[$i]['role']);
print_r ($rows[$i]['role']);
}
ldap_close($ds)
答案 0 :(得分:0)
您可以使用:
foreach ($rows['role'] as $r) {
print_r ( explode(',', preg_replace('/(^|,)\K[^=]*=/', '', $r)) );
}
对于前2行,它给出了这个输出:
Array
(
[0] => Service Desk Customer
[1] => Groups
[2] => domain
[3] => co
[4] => uk
)
Array
(
[0] => User
[1] => Groups
[2] => domain
[3] => co
[4] => uk
)
答案 1 :(得分:0)
你可以试试这个:
$result = array_map(function ($val) {
return substr($val,3, strpos($val, ',') - 3 ); },
$rows['role']);
print_r($result);