Version 16 of URL Parser

Updated 2010-05-15 21:16:06 by zowtar

These snippets of code can be used to check if an URL is valid or not and with some changes it can get URL's from a text.

"In general URI's as defined by RFC 3986 (page 12) may contain any of the following characters: A-Z, a-z, 0-9, -, ., _, ~, :, /, ?, #, ,, @, !, $, &, ', (, ), *, +, ,, ; and =. Any other character needs to be encoded with the percent-encoding (%hh). Each part of the URI has further restrictions about what characters need to be represented by an percent-encoded word." (Gumbo, 2009)


#
#        Check if an URL is valid or not...
#

set blabla {http://www.ietf.org/rfc/rfc3986.txt}
if {[regexp -- {^(https?://[a-z0-9\-]+\.[a-z0-9\-\.]+(?:/|(?:/[a-zA-Z0-9!#\$%&'\*\+,\-\.:;=\?@\[\]_~]+)*)))$} $blabla match url]} {
        puts "$url is a valid url."
}

#
#        Getting an URL from a HTML code...
#

set blabla {<div class="title">Edit <a href="http://wiki.tcl.tk/26255">URL Parser</a></div>}
if {[regexp -- {(https?://[a-z0-9\-]+\.[a-z0-9\-\.]+(?:/|(?:/[a-zA-Z0-9!#\$%&'\*\+,\-\.:;=\?@\[\]_~]+)*)))} $blabla match url]} {
        puts "$url found in the HTML code."
}

Let's test it and post the results here...

PS: It doesn't work for IPv6 yet.