ActivateURL(string [, target] [, paragraph])
Last updated August 11, 2004
Version: 3 | Requires: ColdFusion 5 | Library: StrLib
Description:
This function takes URLs in a text string and turns them into links. The entire string will be returned with the additional <a href> tags
Return Values:
Returns a string.
Example:
<cfoutput>#ActivateURL(inputString)#</cfoutput>
Parameters:
| Name | Description | Required |
|---|---|---|
| string | Text to parse. | Yes |
| target | Optional target for links. Defaults to "". | No |
| paragraph | Optionally add paragraphFormat to returned string. | No |
Full UDF Source:
<cfscript>
/**
* This function takes URLs in a text string and turns them into links.
* Version 2 by Lucas Sherwood, lucas@thebitbucket.net.
* Version 3 Updated to allow for ;
*
* @param string Text to parse. (Required)
* @param target Optional target for links. Defaults to "". (Optional)
* @param paragraph Optionally add paragraphFormat to returned string. (Optional)
* @return Returns a string.
* @author Joel Mueller (lucas@thebitbucket.netjmueller@swiftk.com)
* @version 3, August 11, 2004
*/
function ActivateURL(string) {
var nextMatch = 1;
var objMatch = "";
var outstring = "";
var thisURL = "";
var thisLink = "";
var target = IIf(arrayLen(arguments) gte 2, "arguments[2]", DE(""));
var paragraph = IIf(arrayLen(arguments) gte 3, "arguments[3]", DE("false"));
do {
objMatch = REFindNoCase("(((https?:|ftp:|gopher:)\/\/)|(www\.|ftp\.))[-[:alnum:]\?%,\.\/&##!;@:=\+~_]+[A-Za-z0-9\/]", string, nextMatch, true);
if (objMatch.pos[1] GT nextMatch OR objMatch.pos[1] EQ nextMatch) {
outString = outString & Mid(String, nextMatch, objMatch.pos[1] - nextMatch);
} else {
outString = outString & Mid(String, nextMatch, Len(string));
}
nextMatch = objMatch.pos[1] + objMatch.len[1];
if (ArrayLen(objMatch.pos) GT 1) {
// If the preceding character is an @, assume this is an e-mail address
// (for addresses like admin@ftp.cdrom.com)
if (Compare(Mid(String, Max(objMatch.pos[1] - 1, 1), 1), "@") NEQ 0) {
thisURL = Mid(String, objMatch.pos[1], objMatch.len[1]);
thisLink = "<A HREF=""";
switch (LCase(Mid(String, objMatch.pos[2], objMatch.len[2]))) {
case "www.": {
thisLink = thisLink & "http://";
break;
}
case "ftp.": {
thisLink = thisLink & "ftp://";
break;
}
}
thisLink = thisLink & thisURL & """";
if (Len(Target) GT 0) {
thisLink = thisLink & " TARGET=""" & Target & """";
}
thisLink = thisLink & ">" & thisURL & "</A>";
outString = outString & thisLink;
// String = Replace(String, thisURL, thisLink);
// nextMatch = nextMatch + Len(thisURL);
} else {
outString = outString & Mid(String, objMatch.pos[1], objMatch.len[1]);
}
}
} while (nextMatch GT 0);
// Now turn e-mail addresses into mailto: links.
outString = REReplace(outString, "([[:alnum:]_\.\-]+@([[:alnum:]_\.\-]+\.)+[[:alpha:]]{2,4})", "<A HREF=""mailto:\1"">\1</A>", "ALL");
if (paragraph) {
outString = ParagraphFormat(outString);
}
return outString;
}
</cfscript>
Search CFLib.org
Latest Additions
Jose Diaz-Salcedo added
cfRssFeed
2 day(s) ago
Raymond Compton added
structBlend
23 day(s) ago
Duncan added
IsZIPUK
23 day(s) ago
Todd Sharp added
getTagContentAll
29 day(s) ago
Gerald Guido added
ListReturnDuplicat...
1 month(s) ago