[PHP]REGEX pour interprété une url complexe

Fermé
maxwells Messages postés 25 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 24 juin 2008 - 21 août 2007 à 18:58
 Moua - 21 août 2007 à 20:56
Salut à tous,
Je connais l'étendu des possibilité des expressions régulières mais je suis incapable d'en écrire une.
Je voudrais savoir comment faire pour récupérer les diverses informations dans une URL par exemple https://www.google.fr/search?q=regex+pour+interpr%C3%A9ter+une+url+complexe&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_frFR213FR213&gws_rd=ssl


ici le protocole est : http
le serveur est : www.google.com
et les variable get sont : q = regex+pour+interpr%C3%A9ter+une+url+complexe
sourceid=navclient-ff
ie=UTF8
... etc...

je sais pas si les regex sont la meilleures méthodes pour récupérer ces infos, mais bon, si quelqu'un sait le faire et à du temps à me consacrer, je voudrais une fonction dans laquelle on passe en argument l'url et cette fonction renvoie un array de cette forme :

Array {
	[1] -> 	"http"
	[2] -> 	"www.google.com"
	[3] -> 	Array {
				["q"] -> "regex+pour+interpr%C3%A9ter+une+url+complexe"
				["sourceid"] -> "navclien-ff"
				...
			}
}


avec dans [3] autant de variable que d'arguments si c'est possible...

Je vous remercie d'avance de votre aide...
Si je ne suis pas assez clair relancer moi, je répondrais à toutes vos questions...
A voir également:

1 réponse

Si tu veux, je peux te sortir un truc comme ca :

Array
(
    [0] => https://www.google.fr/search?q=regex+pour+interpr%C3%A9ter+une+url+complexe&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_frFR213FR213&gws_rd=ssl
    [1] => http
    [2] => ht
    [3] => www.google.fr
    [4] => Array
        (
            [0] => q=regex+pour+interpr%C3%A9ter+une+url+complexe
            [1] => sourceid=navclient-ff
            [2] => ie=UTF-8
            [3] => rlz=1B3GGGL_frFR213FR213
        )

)



c'est grâce à ca :

$test    = "https://www.google.fr/search?q=regex+pour+interpr%C3%A9ter+une+url+complexe&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_frFR213FR213&gws_rd=ssl";
$pattern = '/((ht|f)tps?):\/\/(:alnum:+[.[:alnum:]]*\.[a-zA-Z]{2,4})\/[.[:alnum:]]*\?(.*)/';
preg_match($pattern, $test, $array);
$array[4]=explode("&", $array[4]);
print_r($array);


Attention, remplace un :alnum: par [ [ : a l n u m : ] ]
3