【问题标题】:preg_match_all /(\w ):[^\/]/ not workpreg_match_all /(\w ):[^\/]/ 不起作用
【发布时间】:2013-05-19 15:51:10
【问题描述】:

我想从我的网址中获取此模式:(\w+):[^\/]+ 但它在 PHP 中不起作用 :(

在这个网址字符串中:http://azera/admin/filemanager/index/cmd:download/file:RjpcYXplcmFcUm91dGVyLnhtbA==

我必须得到这个数组:

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

但是 php 返回 null ! 我的 php 代码:

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

我该如何解决这个问题?

【问题讨论】:

  • 对我来说似乎工作正常
  • 您可能希望将 [^\/]+ 括在括号中,而不是 \w+
  • \w+ php 无法在 args 末尾得到 ==
  • 我通过将 [^\/]+ 更改为 ([^\/]+) 来修复它

标签: php regex preg-match-all


【解决方案1】:

我不确定您所说的null! 是什么意思,但您想获取数组:

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

当您的正则表达式:(\w+):[^\/]+ 正在捕获 cmdfile。您需要将正则表达式更改为:

\w+:([^\/]+)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2019-12-11
    相关资源
    最近更新 更多