2009-08-20 4 views
1

Dans une application AIR, je charge un tas de texte arbitraire via JSON, le charge dans un objet et l'affiche via un moteur de rendu personnalisé. Je voudrais avoir des URL cliquables. Donc, je suis sûr que c'est possible via quelque chose de regex fou (comme je l'ai trouvé pour php here), mais, Flex étant flex, je suis étonné qu'il n'y a pas de fonctionnalité intégrée pour cela que je ne trouve pas ou, à défaut, une bibliothèque créée par quelqu'un pour le faire.as3 Flex rendre les URL du texte cliquables

(je suis aussi étonné que cette question n'a pas été posée ici avant. Je prévois d'être flambé avec le lien vers ce)

A défaut, tout le monde veut aider avec certains regex fou? ;>

Merci d'avance!

Répondre

3

Vous pouvez remplacer les URL de votre texte pour les liens réels en utilisant l'expression rationnelle suivante:

str = str.replace(/((https?|ftp|telnet|file):((\/\/)|(\\\\))+[\w\d:#@%\/;$()~_?\+-=\\\.&]*)/g, "<u><a href='$1'>$1</a></u>"); 

Réglez ensuite le htmlText sur un composant Label ou Text et écouter c'est l'événement link:

<mx:Text htmlText="{str}" link="linkHandler(event)"/> 

Puis ouvrez l'URL sur le gestionnaire:

public function linkHandler(event:TextEvent):void { 
    navigateToURL(new URLRequest(event.text), '_blank'); 
} 

Excepté pour cette regex, je n'ai pas testé ce code, mais cela devrait fonctionner. En outre, this pourrait vous être utile.

+0

Hey, merci. J'ai mis un terme à ce projet pendant une minute, alors je ne suis pas revenu sur cet onglet pour vous remercier en temps opportun. Je vais essayer et voir comment ça se passe. Merci de comprendre regex fou pour moi! –

+0

C'était en fait un problème que j'avais dans mon code aussi et je l'ai réparé de cette façon, donc pas de problème! :) – leolobato

2

Je voudrais ajouter que l'expression rationnelle suivante pourrait être beaucoup plus utile pour valider une URL:

/(((f|ht){1}tp:\/)[[email protected]:%_\+.~#?&\/=]+)/g

+0

Merveilleux. Pourriez-vous expliquer ce qui rend cette regex préférable à l'autre? (Je ne le conteste pas, je suis simplement curieux. =) Une chose que je ne comprends pas c'est pourquoi ce {1} est nécessaire. Est-ce que "un et un seul match" n'est pas la valeur par défaut? – PEZ

Questions connexes