2016-04-01 22 views
-1

ile değil. Bazı kimlikleri url ile birinden eşleştirmeye ve tüm kimlikleri geri döndürmeye çalışıyorum.preg_match_all yalnızca ilk diziyi 0 diziniyle döndürür ve dizin 1

Kod aşağıdaki gibidir.

dize bu

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

Modeli gibi bir şey

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

KOD

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.');  
    } 

Ama Yukarıdaki var_dump yaptığım zaman ($ eşleşme) alırım.

array (size=1) 
    0 => 

Ve ben, Ya burada eksik sayesinde

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

almak için bekliyordum.

. Ayrıca, $ pattern = "'/ p? Id = [0-9A-Za-z] * /" "i sadece" id = value "değil," php? Id = value "ile eşleştirmek istiyorum. Bunun yerine regex kullanarak

+0

URL parametrelerini ayrıştırmak için normal ifadeler kullanmanın belirli bir nedeni var mı? – Flosculus

cevap

0

Eğer parse_url işlevini kullanabilirsiniz ama tam olarak ne beklenen çıkışı ancak bunun yerine preg_match_all kullanım preg_match ait olan bilmiyorum aşağıdaki regex

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

Yani kod benziyor

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

olarak