Php 匹配ldap连接字符串的正则表达式
我需要从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://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"
}
你用哪种语言?您能否编辑您的问题以显示示例字符串的预期结果?零件的顺序和数量是否可变?您使用哪种语言?您能否编辑您的问题以显示示例字符串的预期结果?零件的顺序和数量是可变的吗?哇!这比正则表达式好得多:谢谢!哇!这比正则表达式好得多:谢谢!