Regex url youtube

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Regex url youtube

Re: Regex url youtube

par Stef » 07 avr. 2010, 17:25

J'ai fait ça en suivant tes conseils AB:
if (strpos($url, 'http://youtube.com/watch?v=') === false) { ...
Mais ça me retourne false bien que j'entre une url comme http://www.youtube.com/watch?v=0ele6fFZq5o

Comment ça se fait?

Edit, résolu, j'avais pas mis les www dans ma chaine...

Re: Regex url youtube

par Stef » 07 avr. 2010, 16:56

Ok, j'y vois plus clair! Merci à tous pour vos réponses, en particulier Calim!! : )

Re: Regex url youtube

par Calimero » 07 avr. 2010, 16:27

Hello Stef,

deux petits conseils simples pour de bons débuts en regexp :

- 1/ Avec les regexp perl (à la fois les plus performantes, et les seules recommandées aujourd'hui en php d'ailleurs), il est obligatoire utiliser un caractère délimiteur au début et à la fin du motif. Si tu as toi-même essayé le code donné plus haut (tu l'as fait, hein ??? Sinon fais-le vite... ;) ) tu as dû voir que php te signale leur absence.

Ce caractère peut être choisi presque librement, même si par habitude on utilise très souvent un /, selon le cas d'autres caractères sont de meilleurs choix (@, #...). L'important est simplement de choisir un caractère qui ne se retrouve pas dans le motif, pour s'épargner des échappements inutiles, et bien sûr que ce soit le même au début et à la fin du motif.

L'utilité de ces caractères est de séparer le motif des options PCRE qui sont écrites juste après le délimiteur de fin.

- 2/ Prends connaissance de la liste des métacaractères PCRE.
Tous les caractères qui y sont cités ont une signification particulière pour le moteur PCRE, donc si tu veux les utiliser "tels quels" dans ton motif il te faudra les échapper pour éviter qu'ils ne soient compris comme des commandes. Tu n'as pas forcément besoin de connaître toutes leurs significations par coeur (encore que, ça vient très vite avec la pratique) mais il est à la fois simple et très utile de mémoriser cette liste.

Re: Regex url youtube

par AB » 07 avr. 2010, 16:26

Tu peux commencer plus en douceur avec ces deux pages http://www.siteduzero.com/tutoriel-3-14 ... e-1-2.html
assez facile.

Sinon pour en revenir à ton pb si tu souhaites seulement savoir si l'url commence par "http://youtube.com/watch?v="
tu peux faire simplement
if (strpos('http://youtube.com/watch?v=') === 0) echo 'ok';
Pas besoin d'expressions régulières pour si peu.

Re: Regex url youtube

par Stef » 07 avr. 2010, 16:05

Oui ce site je connais, il est dans mes favoris! Mais si je dois attendre d'avoir appris tout ce que présente ce site ce n'est pas demain que j'arriverai à bricoler tout seul comme un grand mes regex (et auquel cas je ne viendrais pas demander de l'aide).

Merci quand même! : )

Re: Regex url youtube

par stealth35 » 07 avr. 2010, 15:44

Re: Regex url youtube

par Stef » 07 avr. 2010, 15:40

Super, ça a l'air vachement bien comme outil! : )

Mais quand tu ne sais pas comment rédiger ton expression régulière, ça ne t'avance guère; comme je te l'ai dit je suis une quiche en regex...

Merci quand même pour le post et le lien, ça me servira certainement plus tard! ;)

Re: Regex url youtube

par stealth35 » 07 avr. 2010, 15:23

Regex url youtube

par Stef » 07 avr. 2010, 15:21

Hi : )

Je suis une quiche en regex... Je compte sur votre aide pour progresser à partir du problème que voici:

l'utilisateur entre dans un formulaire l'adresse d'une vidéo sur youtube (selon ce format: http://www.youtube.com/watch?v=0ele6fFZq5o (c'est le seul format valable dans mon script parce que je me sers de cette url pour afficher la vidéo par la suite))

quelle expression régulière me permettra de déterminer si la syntaxe de l'url entrée est correct?

Je n'ai pas la moindre idée de comment écrire ça; je commencerais comme ça:
if (!preg_match('^http://youtube.com/watch?v=', $url)) { ...
Mais je vois pas quoi écrire après le "=" ...

Merci bien pour votre aide! : )