Regex extrait une partie d'un lien (php)

J'ai un lien comme:

/3/topic/video1148288/

et je veux prendre le numéro après la vidéo. Je ne peux pas remplacer le lien avec seulement des nombres car il y en a plus avant l'identifiant de la vidéo.

j'ai essayé

$embed = preg_match("#\b/video([0-9][0-9][0-9][0-9][0-9][0-9][0-9])/#", $raw);

Mais ça ne marche pas.

De l'aide?

2
Définir ne fonctionne pas . Cela fonctionne et voici une démo . Cependant, je remplacerais tous ces nombres par [0-9] + , ce qui signifie qu'il faut faire correspondre un chiffre une ou plusieurs fois. Si vous êtes certain qu'il y aura toujours 7 numéros, vous pouvez utiliser [0-9] {7} .
ajouté l'auteur HamZa, source

3 Réponses

preg_match('/(?<=video)\d+/i', $raw, $match);
echo $match[0];
1
ajouté

Essayez ceci:

$raw = "/3/topic/video1148288/";
preg_match("#/video(\d+)/#", $raw, $matches);
$embed = $matches[1];

Working example: http://3v4l.org/oLPMX

Une chose à noter en regardant votre tentative, c'est que preg_match renvoie une valeur truey/faussement, pas les correspondances réelles. Ceux-ci se trouvent dans le troisième param ( $ matches dans mon exemple).

1
ajouté
ça a marché, je me sens bête maintenant:
ajouté l'auteur ItalianOne, source
déjà fait, ai-je?
ajouté l'auteur ItalianOne, source
@ user3005467 Heureux d'aider =)
ajouté l'auteur jszobody, source
$raw = "/3/topic/video1148288/";

preg_match("/video(\d+)/", $raw, $results);

print "$results[1]";
1
ajouté
Que faire si le lien était /3/topic/video1148288/foo ? . * n'est pas une très bonne idée, IMO.
ajouté l'auteur Amal Murali, source
ajouté l'auteur HamZa, source
yah as-tu raison de mettre \ d + :-)
ajouté l'auteur ederwander, source