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:
Je pense que beaucoup verront mes maladresses concernant les crochets ou parenthèses, des petits conseils ou astuces ne seront pas en trop.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $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 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







Répondre avec citation


Partager