2016-04-01 88 views
-1

。我试图从url中匹配一些ID,并返回所有ID。preg_match_all只返回索引为0的第一个数组,而不是索引为1的第一个数组

代码如下。

的字符串是这样的

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

模式

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

CODE

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($匹配)我得到。

array (size=1) 
    0 => 

我期待得到

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

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

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

+0

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

回答

0

而不是使用正则表达式,你可以使用parse_url功能,但不知道到底什么是你期望的输出,但不是preg_match_all使用preg_match具有以下的正则表达式

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

所以,你的代码看起来像作为

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