Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2012, 11h47   #1
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : septembre 2011
Messages : 14
Points : 1
Points : 1
Par défaut regex et $matches

Bonjour,

Je ne suis pas toujours à l'aise avec les RegEx en général, mais j'ai quand meme fait pas mal de recherches (notamment sur le forum Developpez) et là je seche.

Je crée un motif pour analyser une URL dans son integralité avec toute la complexité qu'on peut y trouver: le domaine, le chemin, le fichier (avec ou sans extension pour le case d'un Rewrite) ainsi que les variables GET (? et&) et les ancres (#).

Selon mon analyse d'une url, on peut avoir:
- une seule fois le domaine, mais d'un format plus ou moins precis, no problem
- pour le chemin, plusieurs noms de dossier précédés du slash sinon au moins une fois le slash
- le "fichier", facultatif si on pointe sur "index.truc", avec ou sans extension pour le cas d'un rewrite
- l'ebauche de la chaine de caractère representant les variables GET


voici le motif en chantier:
Code :
$urlreg="/^http(s)?:\/\/(?P<domain>[a-z0-9]+[\.[a-z0-9]+]*\.[a-z]{2,4})(?P<path>(\/[a-z0-9_]*)*\/)(?P<file>[a-z0-9_-\s]+[\.[a-z]{2,4}]?)?(?P<getvars>[\?|\#[a-z0-9_]+=[a-z0-9\%_-~.]+]?]?)"
Je pense que beaucoup verront mes maladresses concernant les crochets ou parenthèses, des petits conseils ou astuces ne seront pas en trop.

Je recupere donc les parties de l'url dans un tableau $matches (original non? ) pour eventuellement recuperer ce qui pourrait m'interresser par la suite.

Alors j'ai plusieurs petits problemes:
admettons l'URL http://www.test.com/dos1/dir2/test.php
Déjà, quand il n'y a aucune variable GET, je me retrouve avec $matches[file]=test.ph et $matches[getvars]=p !!?? pourquoi? j'ai beau chercher je ne sais pas. Pareillement, si je ne met aucun non de fichier, j'ai un tableau $matches encore plus embrouillé. Je suis sûr que ça a un rapport avec mes crochets et mes parenthèses mais je ne sais pas QUAND utiliser l'un ou l'autre...
De plus, si je me contente seulement du nom de domaine, http://www.test.com/ là mon url ne passe pas le test.

S'il vous plait, aidez moi. Je n'ai pas le niveau de la doc php.net apparemment et je sèche complètement... D'autant que mon motif n'est pas fini, plus j'avance dans le motif, plus je m'embrouille et je reviens en arrière

D'avance un grand merci
viddaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 11h54   #2
Nouveau Membre du Club
 
Homme Fabien
Développeur Web
Inscription : juin 2011
Messages : 15
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2011
Messages : 15
Points : 29
Points : 29
Bonjour,
Je ne me suis pas penché du tout sur l'expression, mais sais-tu qu'il existe une fonction PHP pour récupérer ces informations ?
parse_url()
Vagaweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 12h29   #3
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Val de Marne (Île de France)

Informations forums :
Inscription : septembre 2011
Messages : 14
Points : 1
Points : 1
ah non je ne connaissais pas, merci beaucoup, ça va m'etre bien utile

Cela dit, si je pouvais avoir à l'occasion quelques conseils sur l'utilisation des parenthèses et des crochets. C'est encore très flou pour moi tout ça

Mais encore plus important, je ne voudrai pas revoir ce problème de "troncage" de chaines de caractères à l'avenir, pour ce petit hic sur test.ph . je suis sur que c'est un problème que je rencontrerai à l'avenir...

Merci en tout cas, Vagaweb, pour cet élément de réponse qui me fera bien avancer sur les prochains scripts.
J'avais essayé filter_var mais celui-ci se satisfaisait du "http://".
au moins, avec parse_url() je vais pouvoir analyser les différents éléments du tableau pour quelques verif de présence en black-list ou autre, c'est un très bon début
viddaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h40.


 
 
 
 
Partenaires

Hébergement Web