Page 1 sur 2

Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 07:39
par zerodegre
Bonjour

dans un formulaire j'ai des membres qui renseigne un champs et ensuite c'est récupérer sur la page suivante

==> une adresse internet renseigné un exemple ==>http://www.google.fr/prdhp?rls=ig&hl=fr&tab=wf

J'aimerais par une commande PHP recuperer que le mot GOOGLE de cette adresse

comment dois je proceder ?


Merci d'avance

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 08:13
par xTG
Regardes du côté des expressions régulières ou bien plus simplement : parse_url().

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 09:07
par zerodegre
j'ai essayer mais j'ai du mal a le mettre en action (debutant en la matiere ;) )

ça donnerais quoi avec mon exemple d'adresse ci dessus pour isoler google seulement ?

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 09:12
par Cyrano
xTG t'a indiqué une fonction pourtant bien utile et dans ce forum, chaque fonction PHP est transformée en lien vers la documentation de cette fonction, l'as-tu regardée et lue ?

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 09:17
par zerodegre
oui j'ai essayé ça decoupe bien l'url mais apres je suis perdu je n'arrive pas a isoler que le mot google

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 09:28
par Cyrano
Tiens, un premier tuto et un second tuto sur les expressions régulières : un peu moins facile pour le second, mais commence, fais des essais et viens au besoin demander conseil en nous montrant tes essais, on devrait pouvoir te remettre sur la route au fur et à mesure :)

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 09:28
par zerodegre
oki merci je vais essayer ça

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 09:46
par zerodegre
Je viens d'essayer ceci qui normalement devrais marcher mais j'ai une erreur
	$auto='http://www.teste du lien.com';
	
    $auto=preg_match('#http://www.(.*?).com#', $auto)
	
	echo $auto;

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 09:48
par Cyrano
Oui : indice : attention, le point est un caractère spécial dans une expression régulière. Donc pour l'isoler littéralement, il faut l'échapper. Observe bien ton expression, il y a deux points qui sont interprétés au lieu d'être recherchés comme des points

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 10:02
par zerodegre
j'ai essayer ceci mais toujour erreur ==>

Parse error: syntax error, unexpected T_ECHO
        $auto='http://www.teste du lien.com';
       
    $auto=preg_match('#http://www[^"](.*?)[^"]com#', $auto)
       
        echo $auto;

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 11:02
par Cyrano
Mouais, j'ai peut-être pas été très clair sur ce détail, je vais essayer de formuler autrement.

La chaine que tu veux parser est donc « http://www.google.com » pour en isoler le mot « google » Je t'ai fait observer que dans ta première expression, tu n'avais pas échappé les points inclus dans la chaine que tu as inséré dans l'expression, or un point signifie « n'importe quel caractère », donc il faut l'échapper, et si tu parcoures un peu les tutos, tu verras que ce n'est pas vraiment compliqué, il suffit d'écrire « \. » au lieu de « . »

Reprend ta première expression, modifie et refais l'essai :)

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 11:27
par zerodegre
J'ai fait un teste comme ceci mais toujours ERREUR ==> Parse error: syntax error, unexpected T_ECHO
  $auto='http://www.google.com';
       
    $auto=preg_match('#http://www\.(.*?).\com#', $auto)
       
        echo $auto;
	

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 12:23
par Cyrano
Là, ça ne relève pas de ton expression régulière, c'est une faute d'inattention : il manque un « ; » à la fin de la ligne précédente.

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 12:28
par zerodegre
voila l'erreur est disparue mais en resultat a la place du mot GOOGLE j'obtient 0

Re: Isoler un mot dans une adresse renseigné

Posté : 10 août 2011, 12:41
par Cyrano
As-tu regardé la documentation sur preg_match() ? Le retour n'est pas une chaine mais un nombre d'occurrences trouvées ou false. Donc là, il va falloir de l'astuce et utiliser une autre fonction : preg_replace() pour n'extraire que la partie qui t'intéresse.

Regarde la doc et vois comment tu pourrais utiliser ça ;)