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 :

vérifier la validité d'une url (abs/rel)


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Points : 17
    Points
    17
    Par défaut vérifier la validité d'une url (abs/rel)
    bonjour,

    je récupère une url par un prompt, puis génère un lien <a href>
    le problème que je rencontre étant que le lien fonction correctement lorsque l'utilisateur entre une adresse http://www.google.fr
    mais pas quand il entre simplement www.google.fr, auquel cas ma valeur du lien est: http://127.0.0.1/site/www.google.fr

    Comment dois-je faire pour ne pas forcer l'utilisateur à utiliser une url absolue?

    J'ai pensé faire un test avec une expression régulière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var myRegExp=/(http:\/\/)/;
     
    if(myRegexp.test(Val[i].href) {
    lien += 'href="'+A[i].href+'">';}
    else {
    lien += 'href="http://'+Val[i].href+'">';}
    L'idée est donc de détecter si j'ai http:// au début du lien.
    Si c'est le cas, on laisse le href comme ca, sinon on lui
    ajoute http:// devant.

    Ca ne marche pas pour le moment.
    Peut-être l'expression régulière est elle fausse?

    Une autre idée consisterait de voir le substring etc..

    Mais bon, en meme tps, une qui marche c'est tout ce
    que je demande

    Une idée?
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    bonjour,

    essaye avec cette expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     var myRegExp=new RegExp("^http:\/\/","gi");
    elle vérife si la chaîne débute par http:// ou HTTP://

    -Attention dans ton code tu écris "var myRegExp" (avec une majuscule E) et dans ton test tu écris "if (myRegexp....)" (sans E majuscule).
    -j'ai remarqué que le syntaxe pour les expressions régulières "/expression/options" posait quelques problèmes avec Firefox.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Merci de ton aide,

    Ton expression régulière est bonne, mais mon point de départ mauvais!

    la clause else n'est jamais appliquée dans mon code
    (cas où je dois ajouter "http://" devant le lien "www")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(myRegExp.test(Val[i].href))
        {
        lien +='href="'+Val[i].href+'">';
        }
        else
        {
        lien +='LA CLAUSE ELSE EST APPLIQUEE'">';
        }
    Ce qui est logique car, on teste la présence de http devant le lien,
    or dans les 2 cas, il est présent:


    Les tests effectués:

    1)je rentre www.google.fr au prompt, j'obtiens
    val[i]= http://127.0.0.1/site/www.google.fr

    2) je rentre http://www.google.fr au prompt, j'obtiens
    val[i]= http://www.google.fr/

    Le cas 1), meme si ce n'est pas ce qu'on veut, contient le http...


    je m'en suis donc sorti autrement, en cherchant
    le début commençant par www. (me suis basé sur ton expression)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var myRegExp=new RegExp("^www.","gi");
    et en utilisant une nouvelle variable
    où je teste le substring, précédé de "http://" dans
    le cas problématique.
    Sinon en appelant simplement val[i].href (puisqu'il était
    bon depuis le départ).

    Ca marche déjà en local
    a priori, soucis sur le serveur: aucun des liens générérés ne fonctionne,
    mais je ne sais pas encore de quoi ça vient, vais jeter un oeil.

    EDIT: la fonction php splitslashes() a résolu ce dernier pb coté serveur

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

Discussions similaires

  1. Vérifier la validité d'une ip ?
    Par drweb001 dans le forum Langage
    Réponses: 8
    Dernier message: 20/12/2006, 19h24
  2. Vérifier la validité d'une adresse email
    Par Tourix dans le forum Langage
    Réponses: 9
    Dernier message: 09/10/2006, 16h56
  3. vérifier la validité d'une date
    Par youp_db dans le forum Langage
    Réponses: 1
    Dernier message: 04/10/2006, 11h38
  4. vérifier la validité d'une date
    Par griese dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2006, 16h11
  5. [web] tester la validiter d'une URL
    Par zebiloute dans le forum Web
    Réponses: 4
    Dernier message: 25/11/2002, 16h51

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