|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 14 ![]() |
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 recupere donc les parties de l'url dans un tableau $matches (original non? 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 |
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Fabien Développeur Web Inscription : juin 2011 Messages : 15 ![]() |
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() |
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 14 ![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com