2017-07-28 54 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]; 
}