2011-03-03 4 views
1

Quelqu'un peut-il aider avec une fonction qui va analyser toutes les URL dans des liens html valides dans une chaîne de texte?Coldfusion Parse URLs dans le texte

Par exemple: "Bienvenue à www.nerds4life.com Voir nos articles à nerds4life.com ou à http://nerds4life.com ou encore http://www.nerds4life.com"

deviendrait:

« Bienvenue à www.nerds4life.com Voir nos articles à nerds4life.com ou. à http://nerds4life.com ou aussi http://www.nerds4life.com "

Ce qui serait t La meilleure façon d'aborder cela. Regex (et si oui, comment?) Ou en boucle à travers chaque mot dans le texte (pense que est moins efficace)

Merci

Répondre

3

Encore une fois ... il peut y avoir une expression régulière plus élégante ...

Certainement n'hésitez pas à google pour "bonne" regex pour trouver des URL si celui-ci ne répond pas.

<cfset myText = "Welcome to www.nerds4life.com. View our articles at nerds4life.com or at http://nerds4life.com or also http://www.nerds4life.com or at https://foo.com or http://123.com" /> 

<cfset myNewText = rereplaceNoCase(myText, '((http(s)?://)?((www\.)?\w+\.\w{2,6}))', '<a href="http://\4">\1</a>', 'all') /> 
+0

Salut à nouveau Charlie. Encore une fois, cela fait l'affaire pour chaque cas de test jusqu'à présent, alors merci! – Cheeky

+0

Cela échoue en fait pour des instances telles que "www.google.com.au" –

0

Cette analysera l'URL dans la chaîne qui commence par http ou www et se termine par un espace

<cfset myString = "Welcome to www.nerds4life.com. View our articles at nerds4life.com or at http://nerds4life.com or also http://www.nerds4life.com"> 
<cfset URLinString = rereplaceNoCase(myString, '(((http(s)?://)|(www))\.?(\S+))', '<a href="http://\1">\1</a>', 'all')>