preg_match_all /(\w ):[^\/]/ не работает

я хочу получить этот шаблон из моего URL-адреса: (\w+):[^\/]+, но он не работает в PHP :(

в этой строке URL: http://azera/admin/filemanager/index/cmd:download/file:RjpcYXplcmFcUm91dGVyLnhtbA==

я должен получить этот массив:

array (size=2)
  'cmd' => string 'download'
  'file' => string 'RjpcYXplcmFcUm91dGVyLnhtbA=='

но php возвращает ноль! мой php-код:

preg_match_all('/(\w+):[^\/]+/',$url,$passedArgs);              // get passedArgs

как я могу это исправить?


person Masoud Zohrabi    schedule 19.05.2013    source источник
comment
Кажется, работает нормально для меня   -  person Explosion Pills    schedule 19.05.2013
comment
Возможно, вы захотите заключить [^\/]+ в скобки вместо \w+.   -  person Jerry    schedule 19.05.2013
comment
с \w+ php не могу получить == в конце аргументов   -  person Masoud Zohrabi    schedule 19.05.2013
comment
я исправил это, заменив [^\/]+ на ([^\/]+)   -  person Masoud Zohrabi    schedule 19.05.2013


Ответы (1)


Я не уверен, что вы подразумеваете под null!, но вы хотите получить массив:

array (size=2)
  'cmd' => string 'download'
  'file' => string 'RjpcYXplcmFcUm91dGVyLnhtbA=='

в то время как ваше регулярное выражение: (\w+):[^\/]+ захватывает cmd и file. Вам нужно изменить регулярное выражение на:

\w+:([^\/]+)
person Jerry    schedule 19.05.2013