2009-07-14 10 views
0

J'ai une URL sous forme de chaîne. Comment faire correspondre les numéros après le VideoID. VideoID peut également se produire à différents points de l'URL. Mais je m'inquiéterai de cela après, car je ne peux même pas le faire.Preg_Match une chaîne sous la forme d'une URL

$string = 'http://example.com/index.php?action=vids.individual&VideoID=60085484'; 

preg_match('/(?<VideoID>)=/', $string, $matches); 

print_r($matches); 

... Remplacez certains changements pour un noob. :)

Répondre

3

Il suffit d'utiliser le haut-parse_url/parse_str

$string = 'http://example.com/index.php?action=vids.individual&VideoID=60085484'; 
$URL = parse_url($string); 
parse_str($URL['query'],$Q); 
print_r($Q); 

retours

Array ( 
    [action] => vids.individual 
    [VideoID] => 60085484 
) 
1
/(?:\?|&)VideoID=([0-9]+)/ # get just the ID, stored in \\1 
/(?:\?|&)(VideoID=[0-9]+)/ # get VideoId=ID, stored in \\1 

En supposant que votre URL est correctement formé, il sera toujours précédé par l'une ou ?&, et avec votre exemple l'URL est strictement numérique, il correspondra à une carte d'identité valide jusqu'à la prochain segment de l'URL.

+1

'\ d == [0-9]'. Juste mes tendances OCD lol. – tj111

+1

(?: \? | &) Peut également être exprimé comme [? &] –

0
$string = 'http://example.com/index.php?action=vids.individual&VideoID=60085484&somethingelse'; 
$s = explode("VideoID=",$string); 
print preg_replace("/[^0-9].*/","",$s[1]); 
+0

Échec si VideoID n'est pas à la fin de l'URL –

Questions connexes