Thread: URL Implode
View Single Post
Old 12-21-2005, 09:30 PM   PM User | #2
Element
Regular Coder

 
Element's Avatar
 
Join Date: Jul 2004
Location: Lynnwood, Washington, US
Posts: 855
Thanks: 2
Thanked 2 Times in 2 Posts
Element is an unknown quantity at this point
Quote:
Originally Posted by Error 404
PHP Code:
function url_implode($parsed)
{
    
$output '';
    if (isset(
$parsed['scheme']))
        
$output .= "$parsed[scheme]://";
    if (isset(
$parsed['user']) && isset($parsed['pass']))
        
$output .= "$parsed[user]:$parsed[pass]@";
    elseif (isset(
$parsed['user']))
        
$output .= "$parsed[user]@";
    if (isset(
$parsed['host']))
        
$output .= rawurlencode(rawurldecode($parsed['host']));
    if (isset(
$parsed['path']))
        
$output .= "$parsed[path]";
    if (isset(
$parsed['query']))
        
$output .= '?' urlencode(urldecode($parsed['query']));
    if (isset(
$parsed['fragment']))
        
$output .= "#$parsed[fragment]";
    return 
$output;

This function will take an parse_url array, and return a URL.

You may be wondering what the point of it is, as (normally) if you have a parse_url array, you have the URL. I was creating a PHP script to grab news from a site (using preg_match_all()) and produce an Atom feed. An Atom feed is XML, therefore must be well-formed, so all the parts of a URL must be properly escaped.
Indeed, this is very useful for that. Its also good for script like that one topsite (Gold something? I don't remember the name.) that stored urls all broken up by parse_url() (For some pointless reason.) And they manually put the URLs back together for redirection, but this would reduce their code alot by using a simple, useful function. Thanks for this.
Element is offline   Reply With Quote