2017-07-28 50 views
0

我有这样一个LDAP搜索输出:提取子

CN = ABC0000001,OU =组,DC =域,DC =净 CN = ABC4257635,OU =组,DC =域,DC = net CN = ABC1231231,OU = group,DC = domain,DC = net CN = XYZ0345432,OU = group,DC = domain,DC = net CN = XYZ0546322,OU = group,DC = domain,DC =净 CN = ABC5465747,OU =组,DC =域,DC =净

我想设置基于^ ABC模型只打印的CommonName的一部分,所以我得到的跟随着摹结果:

ABC0000001
ABC4257635
ABC1231231
ABC5465747

看来的preg_match可能是实现这一目标的工具,但是我试图让CN之间的”子= ABC“,并且第一个”,“字符与下列行不成功(返回NULL):

preg_match('CN=(([ABC]+)(\d+)),',$string,$m); echo $m[1]; 

其中$string应该是我的ldap输出中的每一行。

我怎样才能得到我想要的结果?

+0

'/ CN =(\ W *)/'? –

+0

这应该与预期的输出相匹配。但是,您的请求看起来像是在尝试获取号码部分?在这种情况下,'CN =(([a-zA-Z] +)(\ d +)),' –

+0

您可以检查https://regex101.com/r/Qmbz25/1并编辑您的问题以准确和清楚这点 ? –

回答

2

试试这个:

if(preg_match('/^CN=(ABC\d+)/', "CN=ABC0000001,OU=group,DC=domain,DC=net", $m)) 
{ 
    echo $m[1]; 
}