Regex Facebook

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 Facebook

Re: Regex Facebook

par Carpediem » 02 déc. 2014, 20:50

Bonsoir,

Je reviens poster les regex. La seule difficulté pour la regex facebook vient du fait que dans mon cas, même les personnes possédant une page facebook et non un compte puissent tout de même s'inscrire à mon jeu concours. J'ai du donc faire une regex beaucoup plus longue que ce qu'elle pourrait être en temps normal. Je débute en regex donc elle est encore un peu longue mais elle remplie son rôle à merveille. Je vous laisse également les regex de google + et twitter

Regex Facebook :

elseif (!preg_match("#^(^https?://www\.facebook\.com/)[\w]{3,}([\.\/\?]?)[\w]{0,}([\.\?\=\-]?)[\w\%]{0,}([\?\=\-]?)[\w\%]{0,}([\-\=\&]?)[\w\?]{0,}([\/\?\.\=]?)[\w]{0,}([\/\?\.\=]?)[\w]{0,}([\/\?\.\=]?)[ts]{0,2}$#",$facebook)) { 
		$erreur="Votre URL Facebook est incorrect ou non autorisé, merci de recommencer"; 
	}

Regex Twitter :

elseif (!preg_match("#^(^https?://twitter\.com)[/]{1}[a-zA-Z0-9]{2,}$#",$twitter)) { 
		$erreur="Votre URL Twitter est incorrect ou non autorisé, merci de recommencer"; 
	}

Regex Google+ :

elseif (!preg_match("#^(^https?://plus\.google\.com)[\/]{1}[u\+]{1}[\/]{0,1}[A-Za-z0-9]{1,}[\/]{0,1}[a-z0-9]{0,1}[\/]{0,1}[A-Za-z0-9]{0,}[\+\/]{0,2}[A-Za-z0-9]{0,}[\%]{0,1}[A-Za-z0-9]{0,}[\%]{0,1}[A-Za-z0-9]{0,}[\/]{0,1}[a-zA-Z0-9]{0,}[\/]{0,1}[a-zA-Z0-9]{0,1}[\/]{0,1}[a-zA-Z0-9]{0,}#",$google)) { 
		$erreur="Votre URL Google+ est incorrect ou non autorisé, merci de recommencer"; 
	}


A bientôt

Re: Regex Facebook

par Carpediem » 15 nov. 2014, 20:49

Bonsoir,

Je me suis rendu compte que c'était un simulateur en javascript, j'avais pas fait attention^^

Je regarde tout ça et je mets la regex à jour et viendrais posté pour faire profité la communauté.

Merci encore

Bonne soirée

Re: Regex Facebook

par tesmet » 15 nov. 2014, 18:27

Rebonjour

Il y a des nuances pour les expressions régulières d'un langage à l'autre, le lien http://www.xul.fr/ecmascript/expression ... e-demo.php dit javascript et non pas php. La validation sera coté serveur en php ou coté navigateur en javascript ?

J'ai fait le tour de mes "amis" et le profil est toujours sous 2 formes:
1.- /profile.php?id=chiffres suivit de tracking pour moi avec le caractère &
2.- /nom_utilisateur suivit de tracking lorsque pas chez moi avec le caractère ? ou /

après une recherche j'ai trouvé ces règles pour le nom d'utilisateur:
https://www.facebook.com/help/www/105399436216001

#^https?://www\.facebook\.com/(profile\.php\?id=\d+(&|$)|[a-z0-9.]{5,}([?/]|$))#i
devrait être un bon point de départ en php.

bonne chance

Re: Regex Facebook

par Carpediem » 15 nov. 2014, 16:28

Bonjour,

Merci pour ces précisions, je vais m'atteler à modifier cela.

Le contexte d'utilisation. Un jeu concours mensuel sera sous peu organisé sur mon site internet. Le but étant de partager sur facebook twitter et google+ afin d'augmenter le nombre de chance de gagner, un like + un partage sur un de ces réseaux sociaux donne une chance. au moment de l'inscription, ils devront fournir leur URL de leur profil (et non pas de l'accueil du coup) afin que je puisse vérifier si ils ont bien partagés ma publication en cas de tirage au sort victorieux. Pour facebook, je me suis basé sur de nombreuses URL pour composer la regex avec une base obligatoire et une autre partie facultative. Avant de mettre à jour le site, je vérifierais de nouveau en choisissant au hasard des pages facebook et compte facebook et autres twitter et google+ si en les parsant dans un simulateur de regex http://www.xul.fr/ecmascript/expression ... e-demo.php celà fonctionne.

Voila :)

A plus tard

Re: Regex Facebook

par tesmet » 15 nov. 2014, 16:08

Salut

Les crochets [] permettent de définir une classe de caractères, donc [http|https]{4,5} dit simplement que les caractères "http|s" sont autorisés 4 ou 5 fois alors "phps" serait une sous-chaine acceptable selon la regex. Pour faire des options sur des sous-chaines il faut utiliser les parenthèses () comme dans (http|https) qui dit d'accepter soit "http" ou soit "https". Tu verras que sur internet l'on a tendance à écrire (http|https) plutôt sous la forme https? ou le point d'exclamation utilisé après un caractère litéral veut dire 0 ou 1 fois donc si le "s" est présent "https" sera matché et si le s est absent alors "http" est matché.

Ensuite, il n'est pas nécessaire de mettre entre crochets [] un caractère littéral, alors on peut écrire ^https?://www tel quel car aucun des caractères n'est un méta caractère même si / est souvant utilisé somme délimiteur, il est judicieux d'utiliser un autre délimiteur si l'on a plusieurs caractères / à traiter, par exemple # peut faire l'affaire. Et les méta caractères comme le point doivent être échapper s'il sont litéraux. La regex pourrait donc débuter par:

#^https?://www\.facebook\.com/

Pour la suite je n'ai aucune certitude, car il y a longtemps que je n'ai pas utilisé facebook et en me connectant j'ai pu voir que l'adresse de mon accueil était https://www.facebook.com/ sans plus alors que la regex demande au moins 2 caractères après le /. Peut-être qu'en expliquant le contexte d'utilisation de la regex tu obtiendrais des conseils des gens du forum pour la suite.

Bonne chance

Regex Facebook

par Carpediem » 15 nov. 2014, 12:18

Bonjour,

J'ai passé un long moment a faire cette expression qui contrôle la bonne forme d'une url facebook, merci de me dire ce que vous en pensez, celle ci est fonctionnelle mais c'est ma première regex aussi longue. Il y a probablement des choses a modifier.
^(^[http|https]{4,5})[:]{1}[\/\/]{2}[w]{3}[.]{1}(facebook+)[.]{1}(com+)[\/]{1}[a-zA-Z0-9]{2,}(\?|\.|\/?)[a-zA-Z0-9]{2,}[\?\.\/\-]{0,1}[A-Za-z0-9]{0,}[\=\?\-\.\%]{0,}[A-Za-z0-9&]{0,}[\&\%\=\/\?]{0,1}[A-Za-z0-9]{0,}[\=\?\/\.\-]{0,1}[A-Za-z0-9]{0,}[\?\/\=\&]{0,1}[A-Za-z0-9]{0,}[\?\-\=\.\:\/]{0,1}[A-Za-z0-9]{0,}[\=\.\%\/\-]{0,1}[A-Za-z0-9]{0,}$
Merci

A plus tard