Login   Register  
PHP Classes
elePHPant
Icontem

File: cl.parse.url.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Till Wehowski  >  wURI  >  cl.parse.url.php  >  Download  
File: cl.parse.url.php
Role: Class source
Content type: text/plain
Description: Main class
Class: wURI
Parse an URL and extract its parts
Author: By
Last change: * bug fix concerning the location property
Date: 5 months ago
Size: 2,517 bytes
 

Contents

Class file image Download
<?php


/*
  wURI url parsing class
  by T. Wehowski http://webfan.de
  License: Do What The Fuck You Want To Public License
  Download: http://www.phpclasses.org/package/8005-PHP-Parse-an-URL-and-extract-its-parts.html
  Version: 3.0.0 webdof edition/build

examples:
####

$URI = wURI::getInstance();
$location = $URI::getU();
if( in_array('@me', $location->dirs ) )
{
 //Account page...

}

####

$URI = wURI::getInstance();
$xUrl = $URI::parse_uri('http', 'subdomain.domain.tld', '/adirectory/?aquery=123');
$host = $xUrl->dom;   // $host = domain.tld
$q = $xUrl->query['aquery']; // $q = 123
####

$URI = wURI::getInstance();
$location = $URI::getU();
var_dump($location);

*/



class wURI
{

private static 
$instance NULL;

static 
$u;


private function 
__construct()
{
self::getLocation();
}
//eof constructor


public static function getInstance() {

       if (
NULL === self::$instance) {
           
self::$instance = new self;
       }
       return 
self::$instance;
}



private function 
__clone() {}


static function 
getLocation()
{
$protocoll = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? 'https://' 'http://';
self::$u self::parse_uri($protocoll$_SERVER['SERVER_NAME'], $_SERVER['REQUEST_URI']);
}


static function 
getU()
{
return 
self::$u;
}
//eof getU



static function parse_uri($protocoll$SERVER_NAME$REQUEST_URI)
{
$xw = new stdclass;
$xw->protocoll $protocoll;
$xw->protocoll  trim($xw->protocoll ' :/');
$xw->location $xw->protocoll.'://'.$SERVER_NAME.$REQUEST_URI;
$xw->server $SERVER_NAME;
$xw->req_uri $REQUEST_URI;
if(
substr($xw->req_uri01) == '/' )
 {
    
$xw->uri substr($xw->req_uri,strlen($xw->req_uri) );
 }else{
       
$xw->uri $xw->req_uri;
      }

$xw->dirs explode('/'$xw->uri);
$xw->dirs_rev array_reverse($xw->dirs);
$xw->dir dirname$xw->req_uri );


$xw->dots explode('.'$xw->uri);
$xw->dots_rev array_reverse($xw->dots);

$xw->host explode('.',$xw->server);
$xw->host_rev array_reverse($xw->host);
$xw->tld = @$xw->host_rev[0];
$xw->dom = @$xw->host_rev[1].'.'.$xw->host_rev[0];


$t explode('?'$xw->req_uri);
$xw->file basename$t[0] );
parse_str($t[1], $xw->query);

$t explode('.'$xw->file);
$t array_reverse($t);
$xw->file_ext $t[0];

$xw->classic parse_url($xw->location);


return 
$xw;
}
//eof parse_uri




}
//eof