Here's a UDF I wrote recently which allows me to show off my regex skillz.
parseUri() splits any well-formed URI into its components (all are optional).
The core code is already very brief, but I could replace everything within the
<cfloop> with one line of code if I didn't have to account for bugs in the
reFind() function (tested in CF7). Note that all components are split with a single regex, using backreferences. My favorite part of this UDF is its robust support for splitting the directory path and filename (it supports directories with periods, and without a trailing backslash), which I haven't seen matched in other URI parsers.
Since the function returns a struct, you can do, e.g.,
parseUri(uri).anchor, etc. Check it out:
See the demo and get the source code.
7 thoughts on “parseUri: Split URLs in ColdFusion”
very cool! thanks for sharing this.
one scope issue: line 35 “Variables.uriParts.pos” should be “uriParts.pos”
Found the same issue as hua… one suggestion, could you split the host part into subdomain and domain too?
Simple, robust and powerful UDF! Exactly what I looking for!
the anchor value is available if you create on the server the variable you are parsing. The incoming url from a user’s submitted request will not include the anchor – the behavior of browsers is to not send it. Suppose you progammatically want to highlight the point on the page indicated by the anchor? If you are in control of creating the page having the link the user will click, include the variable in the url:
(supposing http://a.com#asdf and asdf is both the anchor in the link and, on the response page, the id value of the element you want to highlight and you have jQuery)
<div id=”asdf”>hello world</div>
Where is the code?
Can you please share the code?