begin process at 2012 02 07 07:24:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > DÉCODER DES CODES HTML PARMIS D'AUTRES ! (AS2)

DÉCODER DES CODES HTML PARMIS D'AUTRES ! (AS2)


 Information sur la source

Note :
Aucune note
Catégorie :ActionScripts Classé sous :chaine, as2, remplacement, html Niveau :Initié Date de création :15/07/2007 Date de mise à jour :15/07/2007 03:49:30 Vu / téléchargé :7 745 / 245

Auteur : Loubiou

Ecrire un message privé
Site perso
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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
  • }
  • //------------------------------------------------------------------------------------
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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • replace_txt.flaTélécharger ce fichier [Réservé aux membres club]25 088 octets

Télécharger le zip


 Historique

15 juillet 2007 03:49:31 :
Coorection du code

 Sources du même auteur

Source avec Zip Source avec une capture FORMATAGE HTML DANS UN DATAGRID
Source avec Zip Source avec une capture RETAILLER UNE IMAGE EN CONSERVANT SES PROPORTIONS
CHARGEMENT DE 2000 DONNEES SOUS FORME XML EN MOINS DE 1 SECO...
SCRIPT DE CHARGEMENT DE CLIPS À LA QUEUE-LEULEU POUR LIMITER...
CONTOURNEMENT DU PROBLÈME DE SÉCURITÉ CROSSDOMAIN DE FLASH P...

 Sources de la même categorie

Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar
Source avec Zip Source avec une capture MP3 LAYER NICE &SMALL par yasdar

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture EFFET D'EAU RÉALISTE - AS2 par Choumoumou
Source avec Zip MENU RETATION par habibcode
Source avec Zip DIAPORAMA AS2 par ahmedhrbdj
Source avec Zip Source avec une capture MULTI-DEBRID par remy2501
Source avec Zip Source avec une capture CONCEPT BROWSER : NAVIGATEUR EN MODE TEXTE par mouloudikhaled

Commentaires et avis

Commentaire de pegase31 le 15/07/2007 11:10:22 administrateur CS

une petite astuce qui a déjà été donnée ici pour remplacer une chaîne dans un string (ici myText) et qui tient en une seule ligne :

myText.split("chaîne à remplacer").joint("chaîne de remplacement");

Peg'

Commentaire de Loubiou le 16/07/2007 01:52:15

Ok bien, mais bon, "chaine.replaceText(pos_deb, pos_deb+len_masq, replace);"   ça fait une ligne aussi non ?
Notons que j'utilise une seule commande flash "REPLACETEXT" au lieu de "SPLIT" et "JOIN" pour votre ligne de code qui oblige plus de cycle machine je pense.

Bref, c'est preque la même chose mais pas tout à fait ;-))

Commentaire de pegase31 le 16/07/2007 12:37:27 administrateur CS

sauf que ma méthode remplace tout les textes dans la lignes d'une seule façon sans paramétres à ajouter, no index à trouver auparavant.
Tu places ce bout de code dans un for en ayant inscrit ton tableau avant et pas besoin de While, ni de toute la tonne de code avant.

Ce qui donnerait :

# //Tableau contenant le code à rechercher et celui qui sera son remplaçant.
# var Tab_code = new Array ( ["&apos;", "'"],
# ["&" , "&"],
# [",<" , "<"],
# [">," , ">"]
# );
# for (var i=0; i<Tab_code.length; i++) {
# myText.split(Tab_code[i][0]).join(Tab_code[i][1]);
# }

voili, rien de plus simple ! Et sèrieusement c'est pas du tout pareil ...

Peg'

Commentaire de shubenka le 16/07/2007 15:52:04

Pour améliorer la méthode il faudrais ne faire qu'un parcours du texte pour toutes les règles de remplacement. Contrairement à N parcours de texte pour N règles. Je dit pas que cela serais facile à faire mais ça serais mieux :p

Commentaire de Loubiou le 16/07/2007 19:36:44

Je viens de tester ton code : je ne l'avait pas fait avant faisant confiance !
Le résultat est flagrant !
- En effet, j'ai le regret de t'informer que ton code ne décode qu'une seule occurence de la phrase à tester (après modifs puisqu'il ne peut que travailler sur des chaînes et non sur directement sur un champ texte comme le mien).

Mon code recherche dans la phrase toutes les occurences et les remplacent à la volée puis refait cette opération pour tous les mots à chercher dans la phrase. D'où le WHILE (pour toute la phrase) et le FOR pour tous les mots à chercher.

En conclusion, je pense qu'avant de parler, il faut analyser la problèmatique et ensuite étudier le code donné en réponse. (je l'applique à moi-même !). Je pensais que mon code était assez explicite ! cela prouve qu'il faut que je donne plus de commentaires à mes codes à l'avenir (même en classe expert). Mon prof me disait que les maths, ce n'était pas de la cuisine (lol).

Pour démonstration j'ai comparé nos 2 codes:

Nb: ton code ne décode rien tel qu'il est, (tu ne l'a pas testé je pense !).
Il faut passer par un chaine pour qu'il fonctionne.
//-----------------------------------------------------------------------
// Ton code :

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

// phrase de départ à décoder :
myText.text="aazerty,<lm>,&apos;&apos;azerty&apos;";

chaine = myText.text;
trace(chaine);
//Tableau contenant le code à rechercher et celui qui sera son remplaçant.
var Tab_code = new Array ( ["&apos;", "1"],
                            ["azer" ,  "2"],
                            [",<",     "3"],
                            [">," ,    "4"]
                          );
for (var i=0; i<Tab_code.length; i++) {
//ma ligne de code proposée par pegase31 :
chaine2 = chaine.split(Tab_code[i][0]).join(Tab_code[i][1]);

}
  trace(chaine2);
// résultat : 1 seul mot décodé (>,) !!!!!!
//donne : aazerty,<lm4&apos;&apos;azerty&apos;

//---------------------------------------------------------------
// mon code :

this.createTextField("my_text", this.getNextHighestDepth(), 8, 150, 320, 22);
my_text.autoSize = true;
// phrase de départ à décoder :
my_text.text = "aazerty,<lm>,&apos;&apos;azerty&apos;";

Decode_carrets(my_text);

//------------------------------------------------------------------------------------
function Decode_carrets(champ_texte){

//Tableau contenant le code à rechercher et celui qui sera son remplaçant.
var Tab_codes = new Array ( ["&apos;", "1"],
                            ["azer" ,  "2"],
                            [",<",     "3"],
                            [">," ,    "4"]
                          );
for(i=0; i<Tab_codes.length; i++){//recherche avec tous les codes un par un
                                 var masq     : String = new String(Tab_codes[i][0]);
                                 var replace  : String = new String(Tab_codes[i][1]);
                                 var len_masq : Number = Tab_codes[i][0].length;
                             var pos_deb  : Number = champ_texte.text.indexOf(masq);
while (pos_deb >-1){ //recherche du même code sur la ligne entière
            champ_texte.replaceText(pos_deb, pos_deb+len_masq, replace);  
                    var pos_deb : Number  = champ_texte.text.indexOf(masq);
                   }//while
                                }//for
// Résultat tout a été décodé :
//donne : a2ty3lm4112ty1
}
//------------------------------------------------------------------------------------

En conclusion, rien n'est acquis en prog ... !






Commentaire de pegase31 le 16/07/2007 19:54:00 administrateur CS

je t'ai juste fait ça de tête, sans tester ... juste pour te dire que ta méthode est plutôt bourrine et demande énormément de cycles CPU ... après tu as le droit d'être butté et de croire que ton code est le meilleur, c'est ton droit le plus stricte. Mais si tu ne veux pas de critiques, ne postes pas ton code ici ..

Sur ce, je me lave les mains de toi et de tes assurances. Je ne t'aiderais plus à évoluer.

Peg'

Commentaire de pegase31 le 16/07/2007 20:03:47 administrateur CS

ah si, une dernière chose : si tu n'arrives pas à avoir du code correctement formaté sous Flash c'est que te transferts sont foireux et que tu devrais commencer par là ... coder tes xmlen utf8, par exemple ou voir à arranger tes PHP .. et si même avec ça t'arrives à rien, exxaue cette simple ligne de code :

System.useCodepage = true;

Et même si avec tout ça ça ne marche pas, pense à la corde ..

Peg'

Commentaire de Loubiou le 16/07/2007 21:23:30

Bon je ne veux pas polémiquer avec toi mais encore une fois tu ne prends pas le temps de l’analyse.
Le dev est avant tout un état d’esprit et poser un problème c’est mettre en évidence sa solution (n’est-il pas ?).
En effet, mon code, comme son titre l’indique, propose de décoder des mots html dans une phrase et pas d’autres. Rien à voir avec un pb quelconque de décodage html. Je maîtrise parfaitement les TextField ! Si j’ai un problème, j’utilise le forum prévu à cet effet.
J’ai dernièrement écrit une fonction flash qui décode les caractères  cyrilliques pour les afficher dans une page de code FR. Le cyrillique à bien plus de caractères que le Français ! Je penserais à la mettre en ligne si l’on me demande. Elle peut s’appliquer pour le chinois ou thaï.
Tu vois, je suis en train de développer une admin de news FLASH formaté en HTML donc j’ai besoin de voir certain codes mais pas d’autres afin de pouvoir les gérer. Comme je suis obligé de travailler dans des nœuds pour des raisons X j’ai parfois certain caractères en HTML indésirables alors que si je pouvais utiliser des attributs, mon XML serait lu plus vite et mieux décodé. Mais là n’est pas le propos !  C’est une question de cahier des charges dont je ne suis pas l’auteur. (cf  mon post sur le chargement de 2000 données en moins d’une seconde et la théorie des attributs expliquée par PhilFlash sur son merveilleux site.
Je te remercie pour la commande que je connais depuis flash4 mais mes XML sont formatés en UTF8 et j’utilise des fichiers CSS avec des  styleSheet.
Je ne veux pas rentrer en conflit avec toi, juste te dire que ma méthode « bourrine » est fonctionnelle et permet de décoder tous les mots (répétitifs ou pas dans une phrase)  alors que la tienne ne fonctionne que sur des chaines et pas sur des textfield et qu’elle ne décode pas toutes les même occurrences d’une même phrase. C’est pour moi un incohérence.
Il n’y a pas de formule miracle qui travaille directement sur un champ texte en recherchant tous les mots et tous les doublons dans une même phrase en une ligne de code !
J’aurais pu prendre l’exemple d’un traducteur (arf) car il arrive dans une phrase que plusieurs mots soient répétés.
Maintenant je ne cherche pas à montrer que mon code est le meilleur, car on peut toujours optimiser. Mon but est de faire partager.  Concernant les temps machines, je peut te les calculer tu serait très surpris !! Maîtrises-tu  l’assembleur ?
Si tu proposes mieux avec la même fonctionnalité, je serais très intéressé de l’étudier et t’en remercie par avance.
Franchement, tes nerfs passés, prends le temps de comprendre mon propos, d’analyser la problématique  d’après mon code  que tu lis parfaitement si tu le veux, et essayons d’en sortir du concret.  Tout le monde peut se tromper (moi compris) dans une société ou nous sommes habitués  à traiter les effets sans analyser les causes !

Commentaire de Loubiou le 16/07/2007 21:31:21

Je pose le problème suivant :
j'ai sur la scène la phrase suivante (DANS UN CHAMP TEXTE):

my_text.text = "aazerty,<lm>,&apos;&apos;azerty&apos;";

Je veux écrire une fonction qui me décode :
&apos; en  1
azer   en  2
,<     en  3
>,     en  4

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

Le problème est posé et je propose une ébauche de solution.






Commentaire de Girou le 17/07/2007 11:49:45

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>,&apos;&apos;azerty&apos;";
var Tab_code = new Array ( ["&apos;", "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

Commentaire de Loubiou le 17/07/2007 13:25:47

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 !





Commentaire de Girou le 17/07/2007 13:33:58

Ben oui...

j'utilise assez souvent ce principe de split / join c'est très pratique :o)

Commentaire de pegase31 le 17/07/2007 13:38:15 administrateur CS

après on dira que je suis mauvaise langue ...
la prochaine fois je ne le ferais pas de tête.

Peg'

Commentaire de Loubiou le 17/07/2007 22:11:41

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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

[AS2]: liens URL d'un module .swf vers un .html? [ par JuneWade ] Salut tous,      Voilà, j'ai un .swf (une interface type menu) intégré dans une page .html. Les boutons de l'interface (.swf) sont censés renvoyer au mp3 player AS2 ou AS3 [ par feniks007 ] Bonjour à tous les ami, je suis débutant mais j' ai quelque notion d'actionscript 2 et 3.j'aimerai savoir ou je pourrai trouver un tutoriel ou une sou Probleme intégration HTML ie6 [ par tntman ] bonjour, j'ai un pb j'ai plusieur truc flash dans ma page html, une baniere, un menu, et ils ne s'affiche pas sur ie 6.voyez vous un pb dans le code o centrer un swf dans le html [ par clay111 ] Bonjours à tous!J'ai créé un site entièrement en flash et je sais que pour le publier il faut l'intégrer dans une page html!Ma question est la suivant infobulle as2 [ par mflo73 ] Bonjour,je suis en train de realiser une petite animation où au survol d'un clip, une infobulle apparait. Mes infobulles suivent le curseur de ma sour Les loaders [ par babouche16 ] Bonjour,j'ai fait plusieurs preloaders et je souhaiterais faire une sorte de démo avec une dizaines... enfin les faire défiler les uns après les autre problême lien html dans une animation avec video [ par mrfabulous ] Bonjour,J'ai fait une animation dans laquelle j'y ajouté une video en flv avec un masque.Dans cette animation il y un bouton qui permet d'aller à l'ac demarer un swf à une image ou séquence voulu a partir du html [ par alain732 ] Bonjour,J'ai 3 séquences (loader, sequence1,sequence2)Je revoie une variable de l'html au swf --&gt; MENU.swf?image=2 dans mon html,et je récupere ma swf en html [ par homer59650 ] Comment peut-on savoir le code HTML d'un SWF. merci d'avance Changer de page depuis flash [ par mchicault ] Bonjour,je suis actuellement en train de faire un flash qui devrait me permettre de changer de page en cliquant sur un bouton dedans. Pour cela j'ai e


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 5,429 sec (3)

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