2012-01-10 2 views
-6

Voici les entrées possibles des utilisateurs.besoin regex pour id vidéo youku

<embed src="http://player.youku.com/player.php/sid/XMTQxNzMxMjI0/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" allowFullscreen="true" type="application/x-shockwave-flash"></embed>

http://player.youku.com/player.php/sid/XMTQxNzMxMjI0/v.swf

http://v.youku.com/v_show/id_XMTQxNzMxMjI0.html

J'ai besoin d'une expression régulière pour extraire l'ID vidéo de l'entrée fournie.

+5

Avez-vous déjà essayé de créer une expression régulière par vous-même? – leepowers

+1

oui beaucoup, mais n'a pas fonctionné –

+2

Bienvenue à stackoverflow. Donnez-moi les questions de codez ne sont pas les bienvenus ici, s'il vous plaît lire la FAQ. Ce site traite de problèmes concrets que vous avez rencontrés lors de la programmation, pas quelque chose d'aussi général que votre question où il est évident que vous n'avez rien fait pour résoudre le problème de programmation d'une manière utile. – hakre

Répondre

4

est là comment je le ferais. id dans le premier groupe de capture. Je comprends maintenant que vous utilisez PHP comme langage d'application, ce qui change un peu les choses. vous devez commencer et terminer l'expression régulière avec un caractère de formalité de votre choix. pour cette expression régulière, j'utiliserais le caractère de hachage, puisqu'il n'est utilisé nulle part dans l'expression régulière:

$regExp = "#youku\.com/(?:player.php/sid/|v_show/id_)([a-zA-Z0-9]+)(?:/|\\.)#"; 
+0

, Merci, cela fonctionne –

+0

Voici les nouveaux formats introduits par Youku, http://v.youku.com/v_show/id_XMTYzOTc0NjA=.html Puis-je avoir la mise à jour regex plz http: // statique .youku.com/v1.0.0212/v/swf/loader.swf? VideoIDS = XMTYzOTc0NjA% 3D & embedid = MTE1LjE4Ni45NC4xMjQCNDA5OTM2NQIC http://player.youku.com/player.php/sid/XMTYzOTc0NjA=/v.swf –

+0

@AtifAli J'ai utilisé cette Reges mais quand je sauvegarde le lien, il ne sauvegarde pas et donne l'erreur de 'Cette valeur ne devrait pas être nulle. '. J'utilise ceci dans le bundle de sonata en faisant mon propre fournisseur, –

1

Voici regex (le meilleur que je peux donner pour la quantité de détails que vous fournissez, il comprend beaucoup de deviner)

(?<=sid\/|\/id_)[^.\/]+ 

OK, je vais donner plus de détails que vous avez fait:

  • Voir et tester votre regex here on Regexr

  • Trouver plus de détails et d'apprendre des expressions régulières ici sur regular-expressions.info
    (Astuce: J'ai utilisé une affirmation de lookbehind, une alternance, une classe de caractères niée et quantificateurs)

+0

Merci, mais je ne peux pas obtenir l'identifiant de la vidéo. Cochez cette $ regExp = "(? <= Sid \/| \/id _) [^. \ /] +"; preg_match ($ regExp, $ product_video, $ match); print_r ($ match); –

+1

@AtifAli La regex ci-dessus n'inclut pas les délimiteurs '/' en dehors de la regex. Vous devrez les ajouter. par exemple, '$ regExp = '/ (? <= sid \/| \/id _) [^. \ /] + /';' – Wiseguy

+1

@AtifAli notez que les délimiteurs hors de la regex ne doivent pas nécessairement être la barre oblique . ça peut être n'importe quel personnage, tant que c'est le même au début et à la fin. Bravo – davogotland