Php 匹配ldap连接字符串的正则表达式

Php 匹配ldap连接字符串的正则表达式,php,regex,ldap,Php,Regex,Ldap,我需要从LDAP连接字符串中提取信息,如下所示: ldap://uid=adminuser,dc=example,c=com:secret@ldap.example.com/dc=basePath,dc=example,c=com 我想使用一个正则表达式,它将为我提取每个标记并将其放入数组中。我尝试了一些正则表达式,得到的最好结果是: /(\w+)\:\/\/(([a-zA-Z0-9]+)(:([^\:\@]+))?@)?([^\/]+)((\/[^#]*)?(#(.*))?)/ 但不幸的是

我需要从LDAP连接字符串中提取信息,如下所示:

ldap://uid=adminuser,dc=example,c=com:secret@ldap.example.com/dc=basePath,dc=example,c=com
我想使用一个正则表达式,它将为我提取每个标记并将其放入数组中。我尝试了一些正则表达式,得到的最好结果是:

/(\w+)\:\/\/(([a-zA-Z0-9]+)(:([^\:\@]+))?@)?([^\/]+)((\/[^#]*)?(#(.*))?)/
但不幸的是,当我在PHP中执行它时,我得到了以下结果:

Array
(
    [0] => ldap://uid=adminuser,dc=example,c=com:secret@ldap.example.com/dc=basePath,dc=example,c=com
    [1] => ldap
    [2] => 
    [3] => 
    [4] => 
    [5] => 
    [6] => uid=adminuser,dc=example,c=com:secret@ldap.example.com
    [7] => /dc=basePath,dc=example,c=com
    [8] => /dc=basePath,dc=example,c=com
)
有人能帮我正确提取连接字符串的每个部分吗

谢谢

[a-zA-Z0-9]+似乎不足以拾取包含=和其他字符的LDAP字符串

一般来说,您不应该尝试自己用正则表达式解析URL。相反,请使用标准库函数

这使得:

array(5) {
  ["scheme"]=>
  string(4) "ldap"
  ["host"]=>
  string(16) "ldap.example.com"
  ["user"]=>
  string(30) "uid=adminuser,dc=example,c=com"
  ["pass"]=>
  string(6) "secret"
  ["path"]=>
  string(29) "/dc=basePath,dc=example,c=com"
}
[a-zA-Z0-9]+似乎不足以提取包含=和其他字符的LDAP字符串

一般来说,您不应该尝试自己用正则表达式解析URL。相反,请使用标准库函数

这使得:

array(5) {
  ["scheme"]=>
  string(4) "ldap"
  ["host"]=>
  string(16) "ldap.example.com"
  ["user"]=>
  string(30) "uid=adminuser,dc=example,c=com"
  ["pass"]=>
  string(6) "secret"
  ["path"]=>
  string(29) "/dc=basePath,dc=example,c=com"
}

你用哪种语言?您能否编辑您的问题以显示示例字符串的预期结果?零件的顺序和数量是否可变?您使用哪种语言?您能否编辑您的问题以显示示例字符串的预期结果?零件的顺序和数量是可变的吗?哇!这比正则表达式好得多:谢谢!哇!这比正则表达式好得多:谢谢!