Isoler un mot dans une adresse renseigné

Eléphant du PHP | 57 Messages

10 août 2011, 07:39

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

ViPHP
xTG
ViPHP | 7331 Messages

10 août 2011, 08:13

Regardes du côté des expressions régulières ou bien plus simplement : parse_url().

Eléphant du PHP | 57 Messages

10 août 2011, 09:07

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 ?

Mammouth du PHP | 19672 Messages

10 août 2011, 09:12

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 57 Messages

10 août 2011, 09:17

oui j'ai essayé ça decoupe bien l'url mais apres je suis perdu je n'arrive pas a isoler que le mot google

Mammouth du PHP | 19672 Messages

10 août 2011, 09:28

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 :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 57 Messages

10 août 2011, 09:28

oki merci je vais essayer ça

Eléphant du PHP | 57 Messages

10 août 2011, 09:46

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;

Mammouth du PHP | 19672 Messages

10 août 2011, 09:48

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 57 Messages

10 août 2011, 10:02

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;

Mammouth du PHP | 19672 Messages

10 août 2011, 11:02

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 :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 57 Messages

10 août 2011, 11:27

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;
	

Mammouth du PHP | 19672 Messages

10 août 2011, 12:23

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 57 Messages

10 août 2011, 12:28

voila l'erreur est disparue mais en resultat a la place du mot GOOGLE j'obtient 0

Mammouth du PHP | 19672 Messages

10 août 2011, 12:41

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 ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: