Décoder des codes html parmis d'autres ! (as2)

Soyez le premier à donner votre avis sur cette source.

Vue 9 293 fois - Téléchargée 293 fois

Description

Imaginons que nous ayons un texte (issu d'un xml par exemple) contenant des balises html du style <b> et </b> et des codes de ce genre : &apos pour l'apostrophe et : & pour le l'ampersand.
Si nous décodions avec la fonction (flash my_text.html=true) nous perdrions ceux que nous désirons gérer comme les <b> et </b> !!

Source / Exemple :


Voici un fonction qui décode les (mots) de votre choix en lui passant en paramètre le nom du champ texte sur lesquel procéder.
Champ texte en effet, puisqu'en AS2 nous n'avons à disposition que l'instruction "ReplaceText".

- Concernant la recherche d'occurences et son remplacement en AS3, je vous renvoie ici : 

http://livedocs.adobe.com/flash/9.0_fr/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts_bak&file=00000084.html

this.createTextField("my_txt2", this.getNextHighestDepth(), 8, 150, 320, 22);
my_txt2.autoSize = true;
my_txt2.text = "&apos;|à|&apos;|â|&apos;|?|,<b>machin</b>,|%|&|";
Decode_carrets(my_txt2);

my_txt.text = "&apos;|à|&apos;|â|&apos;|?|,<b>machin</b>,|%|&|";

Decode_carrets(my_txt);

//------------------------------------------------------------------------------------
function Decode_carrets(chaine){

//Tableau contenant le code à rechercher et celui qui sera son remplaçant.
var Tab_code  = new Array ( ["&apos;",  "'"], 
							["&" ,  "&"],
							[",<"    ,  "<"],
							[">,"    ,  ">"]
						  );
for(i=0; i<Tab_code.length; i++){//recherche avec tous les codes un par un
                                 var masq     : String = new String(Tab_code[i][0]); 
                                 var replace  : String = new String(Tab_code[i][1]);
                                 var len_masq : Number = Tab_code[i][0].length;
	                             var pos_deb  : Number = chaine.text.indexOf(masq);
while (pos_deb >-1){ //recherche du même code sur la ligne entière
		            chaine.replaceText(pos_deb, pos_deb+len_masq, replace);  	
                    var pos_deb : Number  = chaine.text.indexOf(masq);
                   }//while
                                }//for
								
}
//------------------------------------------------------------------------------------

Conclusion :


-----------------------------------------------------
|-- !! ATTENTION !! source compilée avec Flash 9 ---|
-----------------------------------------------------

Voir le fla pour la démo.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
150
Date d'inscription
mercredi 26 juin 2002
Statut
Membre
Dernière intervention
5 décembre 2008

Désolé pour ma vaindicavité mais je suis assez cartésien car j'aime la rigueur.

- Si ce n'est pas un défaut, c'est "chiant" dit-on ... je le concède volontier ;((

Je vais tester cette formule pour voir si elle peut s'appliquer à mon dev en cours.
En effet, parfois dans certaines conditions on a des bugs alors qu'un bout de code semble bien fonctionner en isolé.
Pour l'instant je ne lui trouve rien à redire en toute bonne fois.
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
9
après on dira que je suis mauvaise langue ...
la prochaine fois je ne le ferais pas de tête.

Peg'
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Ben oui...

j'utilise assez souvent ce principe de split / join c'est très pratique :o)
Messages postés
150
Date d'inscription
mercredi 26 juin 2002
Statut
Membre
Dernière intervention
5 décembre 2008

Alors je dit BRAVO ! tout ça pour en arriver là ! lol

Ton code fonctionne parfaitement (enfin le code de pegase31 ;-))

la fonction traite bien toutes les occurences similaires dans la phrase et ce pour l'ensemble des mots à décoder !
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Hello,

je cherche pas a savoir qui a raison, qui a tord...
Mais au probleme posé ci-dessus, a savoir :

Que cette fonction soit bourrine ou hyper hype lol mais qu'elle me donne : a2ty3lm4112ty1

la solution la plus simple et la plus rapide est la suivante :

my_text.text = "aazerty,<lm>,''azerty'";
var Tab_code = new Array ( ["'", "1"],["azer" , "2"],[",<" , "3"],[">," , "4"]);
for (var i=0; i<Tab_code.length; i++) {
my_text.text=my_text.text.split(Tab_code[i][0]).join(Tab_code[i][1]);
}

Le contenu du champs de texte au final est bien égale à :

a2ty3lm4112ty1

taa daaaaaaaaaaaaaaaaaaaaaaaaa
Qu'est ce que j'ai gagné ????

@+
Girou
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.