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 :

'Replace()' lien et surlignement


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut 'Replace()' lien et surlignement
    Je cherche à surligner un mot dans une chaine de caractere,
    j'utilise la methode Replace()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim texte = "<a href='google.fr'>google</a>"
    dim mot = "google"
     
    texte=texte.replace(mot, "<font style=background-color:yellow>"+mot+"</font>")
    mais de cette facon, le lien ne fonctionne plus.

    merci d'avance pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    Pourquoi Dim et pas var?

    Et attention, si tu remplaces "google", ça va remplacer aussi google dans google.fr

    Utilise une regexp (demande si tu y arrives pas)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Effectivement c'est mieux avec var, mais j'ai simplifier le probleme.
    réellement j'utilise 'regexp'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var reg=new RegExp(mot, "gi");
    texte=texte.replace(reg,"<FONT style='background-color:yellow'>"+mot+"</FONT>")
    mais le probleme est le meme.

  4. #4
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var texte = "<a href='google.fr'>google</a>";
    var mot= 'google';
    var reg= new RegExp('(\<a.*\>)('+mot+')(\<\/a\>)','gi');
    texte = texte.replace(reg, "$1<FONT style='background-color:yellow'>$2</FONT>$3");

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Merci MeDioN
    c'est génial, mais je ne veux pas surligné uniquement les 'mots liens'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var texte = "<a href='google.fr'>google</a> est génial, google est grand";
    mais tu m'as bien ouvert le chemain.
    merci encore

  6. #6
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    Ok, alors vire le a, tout simplement, pour éviter de surligner des mots en balise, et ça devrait passer.

    \<a.* => \<.*
    \<\/a\> => \<\/.*\>

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    le probleme, c'est que le mot à surligné doit être entre des balises.
    le 2eme 'google' n'ai pas surligné.

    à la place de prendre les 'mots' entre des balises, il faudrai ne pas prendre les 'mots' dans les balises

  8. #8
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >([.]*[^<\\])<|"([.]*[^<\\])"
    ?

  9. #9
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    >([.]*[^<\\])<|"([.]*[^<\\])"
    Ce code n'empechera pas href="google.fr" d'être remplacé.

    Remplace soit entre balise directement (comme donné précédemment) soit le mot suivi suivi d'un espace ou autre ponctuation collée.

  10. #10
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >([.]*[^<\\])<|[=(?!")?([.]*[^<\\])"

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Alors là, chapeau,
    je n'arrive toujours pas a déchifrer l'expression, je progresse douceument mais surement.
    J'ai quelques petites questions:
    -que signifie: > et < et =
    -ou est mon 'mot' dans l'expression
    -un crochet ouvrant peut ne pas etre suivie d'un fermant: |[=(

    merci pour tout

    PS: merci pour le titre, je ne savais pas, mais ca parait logique

  12. #12
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    Ton mot est là

    ([.]*[^<\\])

    Les > et < sont la pour délimiter les balises entourante (ou non).

    (?!kkechose) signifie que ça va matcher ton mot s'il est suivi de kkechose

    un crochet ouvrant peut ne pas etre suivie d'un fermant: |[=(
    De quoi parles tu? Ce n'est pas le cas.

    Mais je suis pas sur que cette expression est au final adaptée...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Je ne comprend pas comment 'mon mot' qui est predefini peut etre identifié par ([.]*[^<\\])

    Apres le 'ou' | il y a:
    [=(?!")?([.]*[^<\\])"

    je vois 3 crochés ouvrant et que 2 fermant ???

    je vais la comprendre et la tester, on vera bien si elle fonctionne

  14. #14
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    ([.]*[^<\\])

    => ton mot c'est [.]*
    Remplace ça par ton mot.

    Il manque en effet le dernier crochet fermant (ou plutot celui devant est en trop, je cerne pas son utilité).

    Mais honnêtement, je crois pas qu'elle soit bonne pour ce que tu veux faire cette expression.

  15. #15
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    Et ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var texte = "<a href='www.google.fr'>google</a>, google est grand";
    var mot= 'google';
    var reg= new RegExp('([^\<]*)('+mot+')([^\>]*)','gi');
    texte = texte.replace(reg, "$1<FONT style='background-color:yellow'>$2</FONT>$3");

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    helas, ca me surligne aussi les mots des les liens

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    pour recapituler en francais, l'expression,
    Le mot ne doit pas etre contenu entre < et >

    ca semble simple comme ca

  18. #18
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    J'ai très bien compris, et chez moi ça marche très bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var texte = "<a href='www.google.fr'>google</a>, google est grand";
    var mot= 'google';
    var reg= new RegExp('([^\<]*)('+mot+')([^\>]*)','gi');
    texte = texte.replace(reg, "$1<FONT style='background-color:yellow'>$2</FONT>$3");
    Resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="www.google.fr"><font style="background-color: yellow;">google</font></a>, <font style="background-color: yellow;">google</font> est grand

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Alors mon probleme doit etre ailleur, les mots dans les liens sont toujours surligné

  20. #20
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 130
    Points : 134
    Points
    134
    Par défaut
    Envoie ton exemple par mp?

Discussions similaires

  1. [RegEx] regex replacer mots par lien dans page html
    Par AudeB dans le forum Langage
    Réponses: 3
    Dernier message: 05/11/2010, 13h20
  2. [débutante]utiliser les classes css pour surligner des liens
    Par Mitaka dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 06/01/2006, 09h37
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Tutoriels et liens pour le Borland Database Engine
    Par Community Management dans le forum Paradox
    Réponses: 0
    Dernier message: 25/03/2002, 10h23

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