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
John Bartlett added
browserDetect
4 day(s) ago
Rob Brooks-Bilson added
listCompare
7 day(s) ago
Stephen Withington added
formToNameValueP...
15 day(s) ago
anthony petruzzi added
parseExcel
20 day(s) ago
Pablo Varando added
returnRandomHEXC...
21 day(s) ago
Top Rated
QueryStringChang...
Rated 5.0, 10 time(s)
formToNameValueP...
Rated 5.0, 5 time(s)
HTMLSafe
Rated 5.0, 4 time(s)
viewCSS
Rated 5.0, 4 time(s)
generateRandomKe...
Rated 5.0, 3 time(s)