Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/12/2008, 14:42
Avatar de Un_Tico
Un_Tico
 
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: Ayuda: Función para sacar rutas en un código fuente html

Mmmm....

hace algun tiempo me hice una clasesita para manejar URL's talvez le falte algo pero me ha servido para lo que la he necesitado.

Aqui Ta:

Código:
<?php

class sys_url {

	var $scheme;
	var $domain;
	var $port;
	var $path;  # e.g:  /site/   always between '/'
	var $filename;
	var $query; # id=1&b=2&c=3&...
	var $query_vars; #array of 'name'=>value from query;

	var $user;
	var $pass;
	
	function sys_url(){
		$this->scheme = 'http';
		$this->domain = ''; // domain | IP
		$this->port = 80;
		$this->path = '/';
		$this->filename = '';
		$this->query = '';
		$this->query_vars = array();

		$this->user = NULL;
		$this->pass = NULL;
	}
	
	function print_url_info(){
		$info = array();
		$info['scheme'] = $this->scheme;
		$info['domain'] = $this->domain;
		$info['port'] = $this->port;
		$info['path'] = $this->path;
		$info['filename'] = $this->filename;
		$info['query'] = $this->query;
		return $info;
	}
	
	function set_url($full_url=''){		

		if( $full_url == '' ){
		
			$this->domain = str_replace('/','',$_SERVER['SERVER_NAME']);
			$this->port = $_SERVER['SERVER_PORT'];
			$this->filename = basename(__FILE__);//$_SERVER['PHP_SELF'];
			$this->path = substr($_SERVER['REQUEST_URI'],0,strrpos($_SERVER['REQUEST_URI'],'/'.$this->filename)).'/';
			$this->query = $_SERVER['QUERY_STRING'];
			$this->set_query($this->query);
			$result = TRUE;
			
		} else {
			
			$info = parse_url($full_url);
			$this->domain = $info['scheme'];
			$this->port = $info['port'];
			$this->path = $info['path'];
			$this->filename = '';
			$this->query = $info['query'];
			$result = TRUE;
		}
		return $result;
	}

	function set_scheme($scheme){
		### VALID SCHEMES: http, https, ftp, gopher. ###
		$result = FALSE;
		$valid_schemes = array('http','https');
		if( in_array($scheme,$valid_schemes) ){
			$this->scheme = $scheme;
			$result = TRUE;
		}
		return $result;		
	}
	
	function set_domain($domain){
		$this->domain = $domain;
	}
	
	function get_domain(){
		return $this->domain;
	}
	
	function set_path($path){
		$this->path = $path;
		if( substr($path,-1,1)!='/' ){
			$this->path .= '/';
		}		
	}
	
	function get_path(){
		return $this->path;
	}
	
	function set_filename($filename){
		$this->filename = $filename;
	}
	
	function get_filename(){
		return $this->filename;
	}
	
	function set_query($query){
		$query_vars = array();
		if( $query!='' ){
			$tmp_query = explode('&',$this->query);
			foreach($tmp_query as $value){
				unset($tmp_name,$tmp_val);
				list($tmp_name,$tmp_val) = explode('=',$value);
				$query_vars[$tmp_name] = $tmp_val;
			}
			$this->query_vars = $query_vars;
		}
		return TRUE;
	}
	
	function get_query(){
		return $this->query;
	}
	
	function rebuild_query(){
		$tmp_query = '';
		if( count($this->query_vars)>0 ){
			reset($this->query_vars);
			while( list($tmp_name,$tmp_val) = each($this->query_vars) ){
				if( $tmp_query!='' ){
					$tmp_query .= '&';
				}
				$tmp_query .= $tmp_name.'='.$tmp_val;
			}
			$this->query = $tmp_query;
		}				
	}
	
	function add_query_val($name,$value){
		$result = FALSE;
		if( $name!='' ){
			$this->query_vars[$name] = $value;
			$this->rebuild_query();
			$result = TRUE;
		} 		
		return $result;
	}
	
	function del_query_val($name){
		$result = FALSE;
		if( array_key_exists($name,$this->query_vars) ){
			unset($this->query_vars[$name]);
			$this->rebuild_query();
			$result = TRUE;
		} 
		return $result;
	}
	
	function get_rel_url_from($rel_path){
		$rel_path = '';
		$prev = '../';
		$tree_path = explode('/',$this->path);
		return $result;
	}
	
	function get_rel_url(){
		$result = $this->filename;
		$query_string = trim($this->query);
		if( $query_string!='' ){
			$result .= '?'.$query_string;
		}
		return $result;
	}
	
	function get_full_url(){
		$full_url = $this->scheme.'://'.$this->domain.$this->get_path().$this->get_rel_url();
		
		return $full_url;
	}
}

?>
Saludos...