【问题标题】:preg_match_all only return the first array with index 0 and not one with index 1preg_match_all 仅返回索引为 0 的第一个数组,而不返回索引为 1 的数组
【发布时间】:2016-04-01 12:59:22
【问题描述】:

1。我正在尝试将来自 from 的一些 ID 与 url 匹配并返回所有 ID。

代码如下。

字符串是这样的

"gfdgfds.php?id=67f8d4fd6d4&gfddgfds.php?
id=67f8d4f6d4&gfddgfds.php?id=67f8d4f6d4&gfdsgfds.php?id=67f8d4f6fdd4&"

模式

$pattern = '/p?id=[0-9A-Za-z]*/';

代码

preg_match_all($pattern,$input,$matches);   
    //var_dump(count($matches));
     if( count($matches) > 0 ) {
         var_dump($matches);
        //return $matches[1];
     } else {
        die('No matches found.');    
    }

但是当我执行 var_dump($matches) 时,我得到了。

array (size=1)
  0 => 

我期待得到

array (size=1)
      0 =>array()
      1 =>array() // So I can use this.  

我在这里缺少什么,谢谢。

2。另外,我希望 $pattern = "'/p?id=[0-9A-Za-z]*/'" 匹配“php?id=value”,而不仅仅是任何 id=value。

【问题讨论】:

  • 您使用正则表达式解析 URL 参数的任何特殊原因?

标签: php arrays search preg-match-all


【解决方案1】:

您可以使用 parse_url 函数而不是使用正则表达式,但不知道您的预期输出到底是什么,而是使用 preg_match_all 而不是 preg_match 和以下正则表达式

(.php\?id=(\w+))

所以你的代码看起来像

preg_match("/(.php\?id=(\w+))/",$your_string,$matches);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-27
    • 2014-02-18
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    相关资源
    最近更新 更多