Comment convertir espaces et accents des URL en %xx ?

Comment convertir espaces et accents des URL en %xx ? - C - Programmation

Marsh Posté le 09-09-2004 à 20:23:49    

Bonjour,
 
J'ai besoin d'encoder des URL pour un programme en C, comme vous le savez sûrement, les espaces sont codés par %20, il existe d'autres codes pour les caractères accentués et des symboles.
 
Je ne sais pas trop comment m'y prendre et par où commencer. Faut-il que je fasse un tableau avec la liste de tous les codes disponibles ? Il faut que je boucle pour rechercher tous les signes susceptibles d'être convertis sur ma chaine de caractère ?
 
Merci pour vos précieux conseils. :)


---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 09-09-2004 à 20:23:49   

Reply

Marsh Posté le 10-09-2004 à 09:16:45    

tu as des fonctions toutes prêtes pour ça :
str_replace, eregreplace... regarde dans la manipulation des chaines...

Reply

Marsh Posté le 10-09-2004 à 14:46:46    

christophe_d13 a écrit :

tu as des fonctions toutes prêtes pour ça :
str_replace, eregreplace... regarde dans la manipulation des chaines...


 
euh il cherche en C apparemment.
 
pour ceux qui ne connaissent pas la liste des caractères à encoder : http://www.commentcamarche.net/internet/url.php3

Reply

Marsh Posté le 12-09-2004 à 10:11:04    

Master_Jul a écrit :

Bonjour,
 
J'ai besoin d'encoder des URL pour un programme en C, comme vous le savez sûrement, les espaces sont codés par %20, il existe d'autres codes pour les caractères accentués et des symboles.
 
Je ne sais pas trop comment m'y prendre et par où commencer. Faut-il que je fasse un tableau avec la liste de tous les codes disponibles ? Il faut que je boucle pour rechercher tous les signes susceptibles d'être convertis sur ma chaine de caractère ?
 
Merci pour vos précieux conseils. :)


 
Moi, je ferais une structure avec 2 champs
1) la chaîne à remplacer
2) la chaîne correspondante
Puis je crée un tableau de cette structure ensuite, je parcours mon URL dans une première boucle et mon tableau dans une seconde. Ca pourrait être un truc du style

Code :
  1. typedef struct {
  2.      char *in;
  3.      char *out;
  4. } t_url;
  5. main()
  6. {
  7.      //...
  8.      //...
  9.      t_url tabURL[]={
  10.           {"%20", " "},
  11.           {"%30", "é"},
  12.           {"%40", "è"},
  13.           //etc etc
  14.           {NULL, NULL}
  15.      };
  16.      t_url *ptURL;
  17.      ...
  18.      ...
  19.      for (/* je balaye mon URL */}
  20.      {
  21.           for (ptURL=tabURL, ptURL->in != NULL; ptURL++}
  22.           {
  23.                if (strcmp(ptURL->in, /*...*/) == 0)
  24.                {
  25.                     // J'écris ici ptURL->out
  26.                }
  27.           }
  28.      }
  29. }


 
Bien entendu, il y a peut-être une fonction qui le fait déjà et que je ne connais pas...


Message édité par Sve@r le 12-09-2004 à 10:13:21

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 12-09-2004 à 10:16:56    

Merci pour vos réponses, en fait, le code %xx correspond au code hexadecimal des lettres, il suffit de savoir si elles sont à convertir ou non puis de récupérer leur code avec un scanf %x. Merci pour votre aide. :)


---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 12-09-2004 à 10:26:35    

Master_Jul a écrit :

Merci pour vos réponses, en fait, le code %xx correspond au code hexadecimal des lettres, il suffit de savoir si elles sont à convertir ou non puis de récupérer leur code avec un scanf %x. Merci pour votre aide. :)


 
Evidemment, c'est plus simple !!! :-D


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 12-09-2004 à 11:03:12    

Ce que j'ai voulu dire, c'est qu'il est possible de récupérer les sources de PHP et donc les fonctions qui vont avec.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed