2012-09-20 6 views
1

c'est complètement bugging l'enfer hors de moi. Je cogne habituellement avec PHP, mais ce fait frire mon cerveau:match preg ne se comporte pas comme je me souviens

preg_match("/\/([0-9]*)\//i","http://url.com/folder/133302/",$s); 
print_r($s); 

sorties:

Array ([0] => // [1] =>) 

j'attendre qu'il corresponde au nombre spécifié dans l'URL, je suis sûr que cela utilisé pour travailler: s

si j'ajoute une lettre, il fonctionne très bien (la lettre x):

preg_match("/\/([0-9]*)x\//i","http://url.com/folder/133302x/",$s); 
print_r($s); 

sorties:

Array ([0] => /133302x/ [1] => 133302) 

toute aide est grandement appréciée :)

Répondre

1
preg_match("/\/([0-9]+)\//i","http://url.com/folder/133302/",$s); 

Si vous dites * ("zéro fois ou plus"), vous correspondez aussi //. + dit "une ou plusieurs fois", ce dont vous avez besoin.

En outre, vous pouvez utiliser un autre séparateur, et déposez-le modificateur i inutile:

preg_match("#/([0-9]+)/#","http://url.com/folder/133302/",$s);