Ma classe de base sur les textes ( strings )

Soyez le premier à donner votre avis sur cette source.

Vue 8 898 fois - Téléchargée 941 fois

Description

remplace, force le html, parse du BBCode ( modifier )

comme d'ab la page de cette classe sur mon site est dispo : http://bkcreation.info/Flash_ClassesAs2_Strlibs_Str.html

BBCode inclus :
[b]Texte en gras/b
[i]Texte en italique/i
[u]Texte souligné/u
[br] Saut de ligne forcé
[urlhttp://adresse.com/target[_blank]]Text du lien/url ( target : [ _blank | _self | _parent | nomdelaframe ] )
[img]http://url.de/L-image.jpg/img
[align[center]]Texte centré/align ( align : [ left | center | right ] )
[font[Arial]]Texte en arial/font ( font : toutes les polices sont acceptées )
[size[18]]Texte en 18/size ( size : Toutes les tailles sont acceptée )
[color#00FF00]Texte en vert/color ( color : toutes les couleurs au format hexadécimal acceptées )

[list]
[*]un objet/*
[*]un autre objet/*
/list
( list a puces ou a nombres en remplaçant la balise "list" par "nbrlist" )

[quote]citation en italique entre guillemet/quote

Source / Exemple :


Cette classe comporte 4 fonctions :

replace ( t, s, r ) : remplace un substring par un autre dans un string
// t = string source
// s = substring a remplacer
// r = substring remplacant

nl2br ( t ) : corrige le bug du dauble saut de ligne lors de l'importation de texte dynamique
// t = string source

parseHTML ( t ) : force le code html ( ex: remplace "<" par  "<"  )
// t = string source

parseBBCode ( t ) : parse le format BBCode ( modifié )
// t = string source
// attention ce ne sont pas les balises BBCode normale !

EXEMPLE :

import bkcore.strlibs.str;

myXML = new XML ();
myXML.ignoreWhite = true;
System.useCodepage = true;
myXML.load ("test.xml");
myXML.onLoad = function (flag)
{
    if (flag)
    {
        accueil = myXML.childNodes[0];
        tmpAccueilContent = accueil.firstChild.toString();
        tmpAccueilContent = str.nl2br(tmpAccueilContent);
// résout le bug des doubles sauts de ligne
        tmpAccueilContent = str.parseHTML(tmpAccueilContent);
// force le code html ( remplace < par < par exemple )
        tmpAccueilContent = str.parseBBCode(tmpAccueilContent);
// parse le BBCode ( pas exactement un BBCode ) ^^
        _root.accueilContent.htmlText = tmpAccueilContent;
    }
}

Conclusion :


Cette classe utilise des fonctions trop simples pour que j'ai besoin de les commenter ^^

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
7
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
2 novembre 2006

Bonjour,
je suis nouveau en action script, je ne vois pas tjs ou vs voulez en venir.
Votre solution marche uniquement lorsque l'on fait un "toString()", donc on ne peut pas mettre plusieurs noeuds ds vos xml.... Non? J'ai essayé, je n'y parviens pas.
Merci pour votre réponse.
Messages postés
176
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
7 mars 2008

perso je préfère le "tout-en-flash" ce qui est beaucoup plus rapide a déployer. Après chacun ses choix. de plus j'utilise partout les même classe donc changer le contenu d'une classe ou changer le conteu d'un xml revien au même ;)

"Si replace(chaîne, "\n", ""); et nl2br (chaîne); sont équivalente pourquoi de ne pas écrire :
Function nl2br (chaîne) {
replace(chaîne, "\n", "");
}"
Comme je l'ai dit dans le message plus au cela viens du fait que j'ai écrit cette fonction avant la fonction replace() et que j'ai simplement oublier de mettre a jour ;)
Messages postés
7
Date d'inscription
mardi 23 août 2005
Statut
Membre
Dernière intervention
29 mars 2006

Bonsoir,
Si replace(chaîne, "\n", ""); et nl2br (chaîne); sont équivalente pourquoi de ne pas écrire :
Function nl2br (chaîne) {
replace(chaîne, "\n", "");
}

je parlais de la doc au format Windows php_manual.chm
mais il y a le lien si dessous :
http://fr2.php.net/manual/fr/function.preg-replace.php
voir "Exemple 1. Convertit du HTML en texte"
il y a ce que l'on cherche ($search) et ce que l'on remplace $replace.

Prenons un peu de recule avec les fonctions parseHTML et parseBBCode et ne regardons pas ce qu'elles font mais plutôt leur caractère identique comme comparer 2 dessins dans le jeux des 7 erreurs, les 2 dessins sont différents par de petits points mais fondamentalement identique.
Où je veux en venir !?
Et bien garder ce qui est identique car c'est la base, ici la class, et extraire du code les différences.
Les différences sont toutes les séries de remplacement.
Exemple, stocker les différences (remplacement) dans une base de donnée ou dans un format xml <tag search="[b]" replace=""/> charger les différences et les envoyer dans un replace.
S'il y a des nouveaux éléments de remplacement alors je touche la base et non pas la class.
Enfin c'est ma vision des choses.
Messages postés
176
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
7 mars 2008

nonon pas besoin je sais ce que veux dire redondant ^^
et pour te répondre :
"Est ce que replace(chaîne, "\n", ""); est égale à nl2br (chaîne);"
oui, c'est simplement que j'avais créé cette fonction avant la fonction replace ^^et que j'ai ommit de la modifier.
Sinon je trouve que les débutant préfèreront logiquement utiliser nl2br (chaîne); plutot que replace(chaîne, "\n", ""); car ils ne sauront pas forcément que le bug du double saut de ligne d'import vien de la ;)

"parseHTML et parseBBCode sont 2 fonctions distinctes mais en réalité elles font exactement la même chose"
Ce sont simplement des replace préécrit et directement utilisable pour des cas précis et cela évite d retaper tous ces replace a chaque fois. Personnelement j'utilise le parsage de BBCode pour les posts mais j'utilise parseHTML dans d'autre cas ;) j'ai donc besoin de 2 fonction distinctes

"regarde la documentation PHP de la fonction preg_replace à « Exemple 5. Conversion HTML en texte »"
De quelle doc parle tu ? php.net ?
Messages postés
7
Date d'inscription
mardi 23 août 2005
Statut
Membre
Dernière intervention
29 mars 2006

Bonjour snakeeater1,
Je suis un très grand fainéant qui n'aime pas trop écrire.
La question est :
Est ce que replace(chaîne, "\n", ""); est égale à nl2br (chaîne);
C'est évident qu'au premier abord le système nl2br est plus court à l'utilisation mais dans un second temps le code source de nl2br est redondant avec celui de replace. J'ai, pour ma part, toujours une vision de maintenance du code et aussi la création de code le plus générique possible.
Autre remarque, parseHTML et parseBBCode sont 2 fonctions distinctes mais en réalité elles font exactement la même chose. Pour mieux comprendre, regarde la documentation PHP de la fonction preg_replace à « Exemple 5. Conversion HTML en texte » je pense que tu comprendras plus aisément le terme que j'appelle redondant.
Je peux, si tu le désire, être clair avec un exemple.
A Bientôt
Franck

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.