我试图在'='之前删除任何内容以及特定的单词

时间:2014-02-19 14:53:53

标签: php regex

我有一个我需要经历的数组,在'='之前取出所有内容,包括'='以及某些单词。然后用','分隔数组的其余内容 以下是数组的内容:$ 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)

2 个答案:

答案 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);