IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Match des url


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mackla
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 140
    Par défaut Match des url
    bonjours,

    Depuis hier j'esseye de trouver une solution à mon problème mais en vain. je vous explique:

    j'ai un tableau contenant des url de type:

    /blabla/index.html
    /toto/blabla/index.html
    /toto/blabla

    j'ai une variable qui contient par exemple index.html (char *var="index.html").

    je veut savoir si index.html se trouve sur cette table. si oui, prendre l'entrée la plus longue .

    j'ai voulu tenter avec les expressions régulières mais ces impossible vue que la "var" change à chaque fois

    PS: je veut éviter le parcours du tableau caractère par caractère.

    merci pour votre aide.

  2. #2
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    PS: je veut éviter le parcours du tableau caractère par caractère.
    Je suggère de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char *tableau[] = {"foo/index.html", "bar/index.html", "foobar/index.html", NULL};
    char *var = "index.html";
    - pour chaque élément du tableau :
    - chercher si il contient la chaine var avec strstr(tableau[i], var)
    - calculer la longueur de tableau [i] avec strlen(tableau[i])
    - comparer la longueur avec la longueur max

  3. #3
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par valefor Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char *tableau[] = {"foo/index.html", "bar/index.html", "foobar/index.html", NULL};
    char *var = "index.html";
    plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char const *tableau[] = {"foo/index.html", "bar/index.html", "foobar/index.html"}; /* le NULL est inutile ici */
    char const *var = "index.html";

  4. #4
    Membre confirmé Avatar de mackla
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 140
    Par défaut
    Je suggère de faire :

    Code :

    char *tableau[] = {"foo/index.html", "bar/index.html", "foobar/index.html", NULL};
    char *var = "index.html";
    - pour chaque élément du tableau :
    - chercher si il contient la chaine var avec strstr(tableau[i], var)
    - calculer la longueur de tableau [i] avec strlen(tableau[i])
    - comparer la longueur avec la longueur max
    avant de poster mon problème j'ai esseyé le meme truc avec strstr et la longeur max; mais ca ne marche pas.

    je crois que je me suis mal exprimé,je réexpose:

    j'ai un tableau contenant des url de type:

    /blabla/index.html
    /toto/blabla/index.html
    /toto/blabla

    j'ai une variable qui contient par exemple index.ht (char *var="index.ht").

    je veut savoir si index.ht se trouve sur cette table. si oui, prendre l'entrée la plus longue, mais dans l'exemple que j'ai présenté, index.ht, ne figure pas ,or qu'avec strstr elle indique que index.ht est présente..

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par mackla Voir le message
    je veut savoir si index.ht se trouve sur cette table. si oui, prendre l'entrée la plus longue, mais dans l'exemple que j'ai présenté, index.ht, ne figure pas ,or qu'avec strstr elle indique que index.ht est présente..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    int   Numero ;
    int   longmax = 0 ;
    int   long1 = strlen(Variable);
    char  *p = NULL ;
     
     
    for ( i = 0 ; i < N_Entrees ; i++ )
    {
       if ( (p = strstr(entree[i], variable)) != NULL ) /* Est-ce que la sous-chaîne existe ??*/
         {
            if ( strcmp(p, variable) == 0 ) /* Est-ce que l on a exactement la chaîne recherchée ?? */
              {
                 if ( strlen(entree[i]) > longmax ) /* Est-ce que c est la + grande ? */
                   {
                      longmax = strlen(entree[i]);
                      Numero = i ;
                   }
             } 
        }
    }

  6. #6
    Membre confirmé Avatar de mackla
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 140
    Par défaut
    Envoyé par souviron34
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    int   Numero ;
    int   longmax = 0 ;
    int   long1 = strlen(Variable);
    char  *p = NULL ;
     
     
    for ( i = 0 ; i < N_Entrees ; i++ )
    {
       if ( (p = strstr(entree[i], variable)) != NULL ) /* Est-ce que la sous-chaîne existe ??*/
         {
            if ( strcmp(p, variable) == 0 ) /* Est-ce que l on a exactement la chaîne recherchée ?? */
              {
                 if ( strlen(entree[i]) > longmax ) /* Est-ce que c est la + grande ? */
                   {
                      longmax = strlen(entree[i]);
                      Numero = i ;
                   }
             } 
        }
    }
    __________________
    je l'ai modifier pour qu'il marche ;mais il marche que si on a une chaine qui se trouve à la fin tel que l'exemple précedant (index.html).

    si on veut chercher blab au lien de blabla ce code ne fonctionne pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer les icones des URL?
    Par Blo0d4x3 dans le forum Windows
    Réponses: 3
    Dernier message: 26/05/2006, 15h29
  2. [EasyPHP] impossible de faire des URLS avec variable
    Par SandraG dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 30/03/2006, 17h38
  3. [MFC] Decoder des URLs
    Par MrMaze dans le forum MFC
    Réponses: 4
    Dernier message: 23/02/2006, 15h03
  4. [Référencement] Pourquoi des URL longues et explicites ?
    Par bibile dans le forum Référencement
    Réponses: 19
    Dernier message: 09/12/2005, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo