begin process at 2012 05 29 05:49:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Divers

 > 

Expression régulière : Remplacer un texte par un autre mais en évitant les liens hypertextes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Expression régulière : Remplacer un texte par un autre mais en évitant les liens hypertextes

mercredi 24 octobre 2007 à 14:00:22 | Expression régulière : Remplacer un texte par un autre mais en évitant les liens hypertextes

kiwithereturn

Bonjour,

Je sollicite votre aide sur un problème d'expression régulière que je ne maitrise pas du tout.

Mon objectif :
Filtrer sur un forum, avec Javascript, des mots clefs et les remplacer par d'autres (entre autre une image pour faire un popup).

J'ai trouvé le code qui fonctionne très bien :

 reg = new RegExp(MotsCles[i],"g")
MotCle=MotsCles[i].replace(/ /g,"_");
 MotCle=noaccent(MotCle);
 txt = txt.replace(reg,"<span class=\"surligne\"  onMouseOver=\"overdiv++;popLayer('"+MotCle+"')\"onMouseOut=\"hideLayer();overdiv--\">" +MotsCles[i]+"</span>")

Résultat tous les mots sont bien remplacés.

Le problème arrive quand ce même mot appartient à un lien hypertexte ou à un lien image. Dans ce cas là le code remplace betement le mot, brisant ainsi le lien.

Ex :
Si test se transforme en <table>xyz</table>
La chaine href="www.test.fr" devient href="www.<table>xyz</table>.fr"

Je voudrais donc exclure le remplacement dans le cas où le mot est incorporé à un chaine.
Je pense qu'avec une expression régulière cela est possible mais je ne m'en sort pas.
Au début je pensais qu'il fallait juste que le mot soit précédé et suivi d'un espace mais c'est pas aussi facile car le mot peut se trouver en fin de phrase juste avant un point final.

Pourriez vous m'aider ?

Merci d'avance
Christophe.

jeudi 25 octobre 2007 à 17:35:25 | Re : Expression régulière : Remplacer un texte par un autre mais en évitant les liens hypertextes

PetoleTeam

Membre Club
Bonjour,
Pas sur qu'avec les expressions régulières tu y arrive, mais la je me trompe surement n'étant pas du tout calé dans le domaine, cela à l'air assez puissant.

Un autre solution est de faire le trie entre les différents type de noeuds
SI
nodeType EGAL 3 ALORS   // noeud texte
  appliquer la RegExp
SINON
  ne rien faire
Il y a du récursif dans l'air...
Good Luck !
 
;0)
vendredi 26 octobre 2007 à 15:05:21 | Re : Expression régulière : Remplacer un texte par un autre mais en évitant les liens hypertextes

kiwithereturn

Merci mais aie aie, ça me dépasse un peu en tout cas.
J'ai trouvé un palliatif pour le moment : vue que mes mots clefs sont des noms propres on ne peut donc débuter une phrase avec. Donc au lieu de détecter le mot, je détecte un espace suivi du mot. Ainsi les liens URL et images sont exclus car ils ne peuvent posséder d'espace.



vendredi 26 octobre 2007 à 17:24:22 | Re : Expression régulière : Remplacer un texte par un autre mais en évitant les liens hypertextes

tonytruand

Atout hazard, moi j'ai ceci



<html><head>
<script>
function nettoy2()
{var test = document.getElementById('titre2').innerHTML;
a=test.replace(/%20/g," ");
var reg=new RegExp("[ ,;]+", "g");
var tableau=a.split(reg);
for (var i=0; i<tableau.length; i++) {
document.getElementById('eclate').value = ""+tableau[i]+"";
var chaine = document.getElementById('texte').value;
reg = new RegExp((document.getElementById('eclate').value),"ig")
{
chaine = chaine.replace(reg,"<span id='champs'  onClick=\"nettoy3();\"><font style='background:F4C155' color=660000 size=4><b>"+(document.getElementById('eclate').value)+"</b></font></span>");}
   document.getElementById('resultat').innerHTML = chaine;
}}
</script>
<script>function nettoy3(lien){
var lien = document.getElementsByTagName("a")[0];
}
</script>
</head><body>

 


<textarea id="titre2">que</textarea>
<input type=text id="eclate">
<input type=button value='ffff' onClick="nettoy2();">
le texte <textarea id='texte'>voici ce <a href="test3.html">que</a> je cherche ok</textarea>

<div id='resultat'></div>



Cette discussion est classée dans : mot, expression, remplacer, régulière, motscles


Répondre à ce message

Sujets en rapport avec ce message

Remplacer des expression dans un saisie [ par IIznogoud ] Bonjours , j'aimerai savoir comment faire pour "transformer" certain mot d'un formulaire en d'autre mot.Le gars post par exemple bonjours et ca lui Controle des dates [ par ov3rdoze ] Salut Je débute et j'ai voulu faire une fonction qui vérifie à la volée la date saisie dans un input. Pour l'instant je n'ai pas traité les années bis expression régulière AU SECOURS ! [ par jeanette_bella ] Bonjour à tous,Je cherche à faire un ptit script qui me permettrait de récupérer d'un champ de texte que des caractères alphanumériques. Ex : A0FF25Li Expression régulière [ par sylvebarbe ] bonjour,N'ayant aucune connaissance sur ce sujet, je suis à la recherche d'une expression régulière qui permet d'interdire l'entrée dans un chmap de f Expression régulière [ par DaKeD ] Bonjour à tous j'ai besoin d'aide en tant que débutant en javascript. Je cherche à tester si un champ texte contient bien un nombre, décimal ou non. Expression régulière impossible ? [ par Mindiell ] Bonjour, Je cherche actuellement à remplacer certains mots dans un texte en utilisant les expressions régulières. Par exemple : toto est le plus beau Expression régulière [ par Kirvin ] Bonjours à tous,j'utilise les expressions régulière pour cleaner un contenu copié depuis Word (enlever tout le code HTML inutil généré par Word)J'util Expression régulière - Vérifier si un nombre est supérieur à une valeur [ par prim ] Bonjour, Est-ce que quelqu'un connaît une expression régulière pour tester si un nombre est supérieur à 30 par exemple. J'ai fouiller un peu mais j' Problème avec une expression régulière [ par Dadoo ] Bonjour et merci de bien vouloir jeter un oeil sur le sujet. Je désire utiliser une expression régulière pour trouver un caractère (le ²) dans une cha Cacher la saisie "lettres et chiffres" dans une application Javascript [ par darksam ] Bonjour, J'aimerais cacher la saisie des lettres et des chiffres (+symbole) dans se script : [color=red] [size=100] [i] code = prompt('Mot de passe


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales