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

JavaScript Discussion :

Comparaison de chaine


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut Comparaison de chaine
    Pour les besoins d'une appli, je dois comparer un lien avec l'adresse en cours d'affichage dans le navigateur. Pas de probleme, je récupère tout ce qu'il faut.

    En revanche c'est pour la comparaison que çà pose problème :
    Si l'adresse est "classique" pas de probleme un comparaison avec match() fonctionne parfaitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pageAffichee = document.location.toString();
    lien = "mapage.php";
    if(pageAffichee.match(lien))
        alert("ca correspond");

    Si l'adresse comporte un ? (comme c'est le cas, si des variables sont présentes pour PHP) ca ne fonctionne plus mais indexOf() fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     pageAffichee = document.location.toString();
     lien = "mapage.php?var1=1";
    // ici match ne fonctionne plus mais indexOf fonctionne
     if(pageAffichee.indexOf(lien))
         alert("ca correspond");
    si l'adresse comporte un & ni match() ni indexOf ne fonctionnent...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      pageAffichee = document.location.toString();
      lien = "mapage.php?var1=1&var2=2";
    // ici match ne fonctionne plus ainsi que indexOf
      if(pageAffichee.indexOf(lien))
          alert("ca correspond");
    Auriez vous une solution ? Dois-je retravailler les chaines ?

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut !

    heu... pourquoi pas tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(window.location.href == lien)
    ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    Parce que le lien est une partie de l'adresse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pageAffichee = document.location.toString();
    lien = "mapage.php";
    if(pageAffichee.match(lien))
        alert("ca correspond");
    Ici pageAffichee contient "http://www.monsite.com/dossier/index.php?...etc"
    lien contient une partie notamment "index.php?...etc"

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    un problème d'échappement de caractères ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    Sûrement !
    Je progresse, en attendant des réponses, j'ai cherché ! J'ai remarqué que si je remplace & par & çà marche !!! (ce qui est idiot, mais bon)

    Apparemment, Javascript convertit tout seul (comme le navigateur) le & en & ???

    J'ai essayé avec replace de changer le & en & mais je ne parvient pas à trouver l'expression régulière pour détecter les &, j'ai mis (en pensant que ca marcherait) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    pageAffichee.replace("&", "&");
    lien.replace("&", "&");

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    \ sert aussi à echapper les caractères ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Avril 2006
    Messages : 245
    Par défaut
    J'ai résolu le probleme, il ne vient des expressions régulières ou de mes chaines. Les infos sont stockées dans un fichier xml et celui-ci ne supporte pas le caractère & tout seul (cela me renvoie une erreur)...

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

Discussions similaires

  1. [VBA]excel comparaison de chaine de caractere
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2006, 15h32
  2. [langage] Comparaison de chaîne
    Par Fastshadow dans le forum Langage
    Réponses: 7
    Dernier message: 05/09/2004, 18h58
  3. comparaison de chaines de caracteres en PLSQL
    Par biozaxx dans le forum PL/SQL
    Réponses: 3
    Dernier message: 19/08/2004, 09h41
  4. Comparaison de chaines
    Par Marc_P dans le forum Linux
    Réponses: 6
    Dernier message: 17/02/2004, 17h04
  5. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41

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