Page 1 sur 1

Question simple REGEX

Posté : 02 août 2007, 18:37
par djmustru
Bonjour à tous,

Je désire faire une petite chose en Regex, simple je pense pour un connaisseur.

Donc j'ai un tableau rempli d'Url, et j'aimerai faire un controle sur ses url.

exemple de contenu de mon tableau d'url :

http://monsite.com/blablalle.html
http://fred.monsite.com
http://robert.monsite.com


Je fait donc un 'for each' sur ce tableau et recupere les adresse dans la var $url
j'aimerai garder uniquement les adresses de type http://*.monsite.com

Comment puis-je faire ?

Merci d'avance et bonne journée. :wink:

Posté : 02 août 2007, 18:52
par Truc
quelque chose dans ce style :
"#http://.*\.monsite#"

Posté : 02 août 2007, 18:56
par Sékiltoyai
Non, le point va rechercher tous les caractères, une url

Code : Tout sélectionner

http://machin.truc.net/dossier1/index.php?var=monsite.com
passera parfaitement.
Il faut limiter aux caractèrtes alphanumériques en remplacant le point par [a-zA-Z0-9]

Posté : 02 août 2007, 18:58
par djmustru
oui effectivement, Sékiltoyai a raison, cela me sort des adresse que j'aimerai pas recupérer du style

Code : Tout sélectionner

http://robert.monsite.com/blabla.htm
Je n'arrive pas a limiter aux adresse qui finissent par ".com"

En tout cas merci de votre aide

Posté : 02 août 2007, 19:51
par Sékiltoyai
oui, trè!s juste, met ^ en début de pattern et $ en fin de pattern

Posté : 02 août 2007, 19:52
par Truc
Non, le point va rechercher tous les caractères, une url

Code : Tout sélectionner

http://machin.truc.net/dossier1/index.php?var=monsite.com
passera parfaitement.
Non, il devait y avoit un "." avant "monsite" :wink:
oui effectivement, Sékiltoyai a raison, cela me sort des adresse que j'aimerai pas recupérer du style
Je n'arrive pas a limiter aux adresse qui finissent par ".com"
ben... c'était pas bien compliqué d'ajouter un ".com" en fin

Pour être plus juste:
"#^http://\w+\.monsite.com$#i"
ou sans accents
"#^http://[a-zA-Z0-9]+\.monsite.com$#i"

Posté : 02 août 2007, 19:58
par djmustru
Ca marche !! merci beaucoup !!

Posté : 02 août 2007, 20:45
par Truc
Modération :
djmustru, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

Posté : 02 août 2007, 21:44
par Sékiltoyai
Maintenant que j'y pense, il manque aussi les _ et - (ils sont acceptés dans les sous-domaines, non ?)

Posté : 02 août 2007, 22:17
par Truc
"_" est inclus dans "\w" mais pas "-"

Ceci dit il s'agit certainement de pseudo pour les sous-domaines souvent on evite ces caractères, mais c'est à voir :)

Posté : 02 août 2007, 22:29
par Hubert Roksor
Un mot là-dessus :
"#^http://\w+\.monsite.com$#i"
  • n'utilisez pas de guillemets ", ou alors pensez à échapper les $
  • échappez vos backslashes \ !! Vous ne savez pas comment une future version de PHP interprétera \w donc échappez le backslash par sécurité
  • n'oubliez pas le pattern modifier D, sinon le $ représente la fin de la chaîne ou l'avant dernier caractère si le dernier caractère est un saut de ligne
Au final on obtient :
'#^http://\\w+\\.monsite.com$#iD'

Posté : 02 août 2007, 22:38
par Truc
oubli pour les "\" le reste je ne savais pas :)