After talking with Ray some more I re-wrote the UDF to use an XML file as it's source. Includes options for the XML file URL (remote), and alternate URL (local in case of connection error), and refresh rate.
Comments welcome. Thanks, Sam ---------------------------------------------- Blog: http://www.rewindlife.com Chart: http://www.blinex.com/products/charting ---------------------------------------------- <!--- getReferringSearch Extracts the search criteria from the referrer, or a supplied URL. Thanks to Ryan Hagan for providing a detailed list of search urls. Samuel Neff ([EMAIL PROTECTED]) ---> <cffunction name="getReferringSearch" returnType="string" output="false"> <cfargument name="testUrl" type="string" required="false"> <cfset var s =""> <cfset var refererSplit = ""> <cfset var p = ""> <cfset var i = ""> <cfset var xmlDoc = ""> <cfset var patterns = ""> <cfset var atts = ""> <!--- OPTIONS referringSearchPatternDataUrl The URL to the search patterns XML file. This is intended to be a centrally managed remote file that can be kept up to date through community effort. referringSearchPatternDataAltUrl Secondary URL to the search patterns XML file. This is intended to be a local cache of the patterns file in case of connection failure. referringSearchPatternRefreshRate Frequency to referesh the XML file. The file will probably be rarely changed so a high number is recommended. In hours. Data File The patterns XML file should match the following example: <?xml version="1.0" ?> <patterns> <pattern url="http://altavista.com/sites/search/web" keys="q" /> <pattern url="http://www.google.com/search" keys="q,as_q,as_epq" /> </patterns> keys is comma delim list of possible URL keys that indicate criteria. ---> <cfscript> referringSearchPatternDataUrl = "http://127.0.0.1/tst/getReferringSearchPatterns.xml"; referringSearchPatternDataAltUrl = "http://127.0.0.1/tst/getReferringSearchPatterns.xml"; referringSearchPatternRefreshRate = 6; </cfscript> <!--- If we don't have the patterns or if they're old, reload them. Since this function will typically only be called once per request, then there's no disadvantage of having this code inside the function as opposed to when the function is loaded. If for some reason you're calling this a lot in the same request, then you may want to move this code outside the function execution block. ---> <cfif not structKeyExists(application, "getReferringSearchPatterns") or application.getReferringSearchPatterns.lastReloadTime LTE dateAdd("h", -1 * referringSearchPatternRefreshRate, now())> <cftry> <cfhttp url="#referringSearchPatternDataUrl#" method="get" throwOnError="true"> <cfcatch type="any"> <cfhttp url="#referringSearchPatternDataAltUrl#" method="get" throwOnError="true"> </cfcatch> </cftry> <cfset xmlDoc = xmlParse(cfhttp.fileContent)> <cfset patterns = xmlDoc.patterns.pattern> <cfset s = structNew()> <cfloop index="i" from="1" to="#arrayLen(patterns)#"> <cfset atts = patterns[i].xmlAttributes> <cfset s[atts.url] = atts.keys> </cfloop> <cfset s.lastReloadTime = now()> <cfset application.getReferringSearchPatterns = s> </cfif> <cfparam name="arguments.testUrl" default="#cgi.http_referer#"> <cfif arguments.testUrl neq ""> <cfset refererSplit = listToArray(arguments.testUrl, "?")> <cfif arrayLen(refererSplit) GTE 2 and structKeyExists( application.getReferringSearchPatterns, refererSplit[1])> <cfset u = listToArray(refererSplit[2],"&")> <cfloop index="p" list="#application.getReferringSearchPatterns[refererSplit[1]]#"> <cfloop index="i" from="1" to="#arrayLen(u)#"> <cfif listGetAt(u[i], 1, "=") is p> <cfset s = listGetAt(u[i], 2, "=")> <cfbreak> </cfif> </cfloop> </cfloop> </cfif> </cfif> <cfreturn s> </cffunction> <?xml version="1.0" ?> <patterns> <pattern url="http://altavista.com/sites/search/web" keys="q" /> <pattern url="http://altavista.com/web/results" keys="q" /> <pattern url="http://br.altavista.com/web/results" keys="q" /> <pattern url="http://de.altavista.com/web/results" keys="q" /> <pattern url="http://de.altavista.com/web/results/" keys="aqa" /> <pattern url="http://es.altavista.com/web/results" keys="q" /> <pattern url="http://it.altavista.com/web/results" keys="q" /> <pattern url="http://se.altavista.com/web/results" keys="q" /> <pattern url="http://uk.altavista.com/web/results" keys="q" /> <pattern url="http://www.altavista.com/sites/search/web" keys="q" /> <pattern url="http://www.altavista.com/web/results" keys="q" /> <pattern url="http://www.altavista.cz/web/results" keys="q" /> <pattern url="http://aolsearch.aol.ca/dirsearch.adp" keys="query" /> <pattern url="http://search.dogpile.com/texis/search" keys="q" /> <pattern url="http://search.earthlink.net/search" keys="q" /> <pattern url="http://www.findology.com/2.php" keys="q" /> <pattern url="http://go.google.com/hws/search" keys="q" /> <pattern url="http://www.google.at/search" keys="q" /> <pattern url="http://www.google.be/search" keys="q" /> <pattern url="http://www.google.ca/search" keys="q,as_epq" /> <pattern url="http://www.google.ch/search" keys="q" /> <pattern url="http://www.google.cl/search" keys="q" /> <pattern url="http://www.google.co.cr/search" keys="q" /> <pattern url="http://www.google.co.hu/search" keys="q" /> <pattern url="http://www.google.co.il/search" keys="q" /> <pattern url="http://www.google.co.in/search" keys="q" /> <pattern url="http://www.google.co.nz/search" keys="q" /> <pattern url="http://www.google.co.th/search" keys="q" /> <pattern url="http://www.google.co.uk/search" keys="q" /> <pattern url="http://www.google.co.ve/search" keys="q" /> <pattern url="http://www.google.com.ar/search" keys="q" /> <pattern url="http://www.google.com.au/search" keys="as_epq" /> <pattern url="http://www.google.com.br/search" keys="q" /> <pattern url="http://www.google.com.hk/search" keys="q" /> <pattern url="http://www.google.com.mx/search" keys="q" /> <pattern url="http://www.google.com.pe/search" keys="q" /> <pattern url="http://www.google.com.ru/search" keys="q" /> <pattern url="http://www.google.com.tr/search" keys="q" /> <pattern url="http://www.google.com.tw/search" keys="q" /> <pattern url="http://www.google.com/custom" keys="q" /> <pattern url="http://www.google.com/ie" keys="q" /> <pattern url="http://www.google.com/search" keys="q,as_q,as_epq" /> <pattern url="http://www.google.de/search" keys="q,as_epq" /> <pattern url="http://www.google.fi/search" keys="q" /> <pattern url="http://www.google.fr/search" keys="q,as_q" /> <pattern url="http://www.google.ie/search" keys="q" /> <pattern url="http://www.google.it/search" keys="q,as_epq" /> <pattern url="http://www.google.nl/search" keys="q" /> <pattern url="http://www.google.pl/search" keys="q" /> <pattern url="http://www.google.pt/search" keys="q" /> <pattern url="http://search.iwon.com/commerce/google.jsp" keys="searchfor" /> <pattern url="http://search.lycos.com/default.asp" keys="query" /> <pattern url="http://search.metacrawler.com/texis/search" keys="q" /> <pattern url="http://auto.search.msn.com/results.asp" keys="q" /> <pattern url="http://search.msn.com.mx/results.aspx" keys="q" /> <pattern url="http://search.msn.com.tw/spresults.aspx" keys="q" /> <pattern url="http://search.msn.com/pass/results.aspx" keys="q" /> <pattern url="http://search.msn.com/preview.aspx" keys="q" /> <pattern url="http://search.msn.com/results.asp" keys="q" /> <pattern url="http://search.msn.com/results.aspx" keys="q" /> <pattern url="http://search.msn.com/spresults.aspx" keys="q" /> <pattern url="http://search.msn.nl/results.aspx" keys="q" /> <pattern url="http://search.netscape.com/nscp_results.adp" keys="query" /> <pattern url="http://aolsearch.aol.com/aol/search" keys="query" /> <pattern url="http://eplansekits.com/cgi-bin/smartsearch/smartsearch.cgi" keys="keywords" /> <pattern url="http://ms108.mysearch.com/jsp/AVweb.jsp" keys="searchfor" /> <pattern url="http://rr.looksmart.com/r_search" keys="key" /> <pattern url="http://search.cometsystems.com/search.php" keys="qry" /> <pattern url="http://search.virgilio.it/search/cgi/search.cgi" keys="qs" /> <pattern url="http://www.1stblaze.com/rel_search.phtml" keys="xml_kwd" /> <pattern url="http://www.agoodsearch.com/find.php" keys="terms" /> <pattern url="http://www.att.net/cgi-bin/websearch" keys="qry,as_q" /> <pattern url="http://www.browserwise.com/search/search.cgi" keys="Terms" /> <pattern url="http://www.coolwebsearch.com/search.php" keys="qq" /> <pattern url="http://www.findtarget.com/cb/hotsheet.php" keys="q" /> <pattern url="http://www.go-in-search.com/selink.php" keys="terms" /> <pattern url="http://www.hotbot.com/default.asp" keys="query" /> <pattern url="http://www.mywebsearch.com/jsp/GGweb.jsp" keys="searchfor" /> <pattern url="http://www.overture.com/d/search/p/juno/" keys="Keywords" /> <pattern url="http://www.search.com/search" keys="q" /> <pattern url="http://www.searchalot.com/texis/open/meta" keys="q" /> <pattern url="http://www.search-casual.com/selink.php" keys="terms" /> <pattern url="http://www.searches-easy.com/selink.php" keys="terms" /> <pattern url="http://www.searchfiend.com/search.php" keys="keyword" /> <pattern url="http://www.searching-easy.com/selink.php" keys="terms" /> <pattern url="http://www.searching-ez.com/selink.php" keys="terms" /> <pattern url="http://www.searchit.com/search.php" keys="keywords" /> <pattern url="http://www.searchtopper.com/search.php" keys="s" /> <pattern url="http://www.sqwire.com/query.php" keys="kw" /> <pattern url="http://b.search.yahoo.com/bin/search" keys="p" /> <pattern url="http://ca.google.yahoo.com/bin/query_ca" keys="p" /> <pattern url="http://ca.search.yahoo.com/search/ca" keys="p" /> <pattern url="http://cn.websearch.yahoo.com/search/web_cn" keys="p" /> <pattern url="http://google.yahoo.com/bin/query" keys="p" /> <pattern url="http://search.yahoo.com/bin/query_msie" keys="p" /> <pattern url="http://search.yahoo.com/bin/search" keys="p" /> <pattern url="http://search.yahoo.com/search" keys="p,va" /> <pattern url="http://search.yahoo.com/search/msie" keys="p" /> </patterns> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Archives: http://www.houseoffusion.com/lists.cfm?link=t:4 Subscription: http://www.houseoffusion.com/lists.cfm?link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Your ad could be here. Monies from ads go to support these lists and provide more resources for the community. http://www.fusionauthority.com/ads.cfm

