preg_match_all只返回索引为0的第一个数组,而不返回索引为1的数组

时间:2016-04-01 12:59:23

标签: php arrays search preg-match-all

1 即可。我正在尝试匹配from和url中的一些ID并返回所有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。

1 个答案:

答案 0 :(得分:0)

您可以使用parse_url功能,而不是使用正则表达式,但不能确切知道您的预期输出是什么,而不是preg_match_all使用preg_match以及正则表达式

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

所以你的代码看起来像

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