Flagrant Badassery

A JavaScript and regular expression centric blog

parseUri: Split URLs in ColdFusion

Update: I've added a JavaScript implementation of the following UDF. See parseUri: Split URLs in JavaScript.

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.

There Are 3 Responses So Far. »

  1. very cool! thanks for sharing this.
    one scope issue: line 35 “Variables.uriParts.pos” should be “uriParts.pos”

  2. Found the same issue as hua… one suggestion, could you split the host part into subdomain and domain too?

  3. Simple, robust and powerful UDF! Exactly what I looking for!
    Great work!

Post a Response

If you are about to post code, please escape your HTML entities (&amp;, &gt;, &lt;).