mardi, juillet 20 2010

[RegExp] - TextField.htmlText toUpperCaser tout sauf le href

Prenez un projet, qui a pour particularité d'utiliser des TextField remplis de balises HTML pour renvoyer les utilisateurs vers les différentes rubriques du site.


var tf : TextField = addChild(new TextField()) as TextField;
var sText : String = "<a href='http://www.**.com/path/'>ma rubrique</a>";
tf.htmlText = sText

Ajoutez à ça la volonté du client de passer tous ces textes en majuscule.


var tf : TextField = addChild(new TextField()) as TextField;
var sText : String = "<a href='http://www.**.com/path/'>ma rubrique</a>";
var sUpperText : String = sText.toUpperCase();
tf.htmlText = sUpperText

Jusque-là rien de bien sorcier. Sauf qu'un beau matin de juillet vous recevez ce genre de message :

« Les liens vers les rubriques du site ** sont en majuscule. De ce fait, le navigateur ne trouve pas les pages concernées. Exemple : http://www.**.com/PATH/ Le lien devrait être simplement : http://www.**.com/path/ »

Après un grand moment de solitude, me voilà parti en quête d'une solution toute prête à l'emploi. Mais après plusieurs heures de recherche, j'ai bien dû me rendre à l'évidence qu'on n’était pas bien nombreux à avoir été confronté à ce problème.

Il ne restait plus qu'à se retrousser les manches.

Donc, avec l'aide de mon ami RegExp, il me fallait localiser l'URL dans la chaine et la passer en minuscule :


var tf : TextField = addChild(new TextField()) as TextField;
var sText : String = "<a href='http://www.**.com/path/'>ma rubrique</a>";
var sUpperText : String = sText.toUpperCase();
var url:RegExp = /href=.[^>]*/gi;
var sUpperTextAndURLLower : String = sUpperText.replace(urlfunction (m:String, ... rest):String {
return m.toLowerCase();
});
tf.htmlText = sUpperTextAndURLLower

Tout ça pour dire que la recherche sur internet c'était bien mieux quand il y avait moins de monde dessus!

++
Laurent

dimanche, janvier 31 2010

[AS3] - Supprimer tous les accents d'une chaine de caractère

« La recherche tient compte des accents, il faudrait faire sauter ça… » Une petite phrase se baladant au milieu d'un mail de correction. :)

Je me suis dit: « pas de souci, Adobe a bien du prévoir ça quelque part » (je suis encore très fleur bleue au sujet de l'API qu'Adobe met à notre disposition) :p

Au bout de 20 minutes, j'ai bien dû me faire une raison. ;('

J'ai donc pondu une petite méthode en m'inspirant de méthodes PHP glané sur le net. :)

Lire la suite...