Foros del Web » Programando para Internet » PHP »

Ayuda: Función para sacar rutas en un código fuente html

Estas en el tema de Ayuda: Función para sacar rutas en un código fuente html en el foro de PHP en Foros del Web. Buenas, andaba yo tonteando con php y se me ocurrió realizar un pequeño script para buscar en el código fuente de una web externa, todas ...
  #1 (permalink)  
Antiguo 23/12/2008, 11:33
 
Fecha de Ingreso: febrero-2008
Mensajes: 43
Antigüedad: 16 años, 3 meses
Puntos: 2
Ayuda: Función para sacar rutas en un código fuente html

Buenas, andaba yo tonteando con php y se me ocurrió realizar un pequeño script para buscar en el código fuente de una web externa, todas las rutas que sean de este tipo:
http://www.pagina.com/archivo.php?v=e165a01

y almacenara o bien la ruta entera, o solo el contenido de la variable, o lo que es lo mismo: e165a01

He probado con la función explode, de esta manera:
Código PHP:
        $extraido explode('"archivo.php?v=',$fuente,2);
        
$extraido explode('"',$extraido[1]); // Delimitador final:comilla doble 

Esto no me funciona ya que me parte todo el código fuente dentro de un array enorme, cosa que no me sirve para nada.

He pensado en usar para delimitar la cadena, expresiones regulares, pero me parece demasiado engorroso para algo tan simple.

No se si a alguien se lo ocurre una solución efectiva para esto o si alguna vez habeis usado/codeado una función parecida a lo que yo quiero.

Gracias a todos.
  #2 (permalink)  
Antiguo 23/12/2008, 11:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda: Función para sacar rutas en un código fuente html

expresiones regulares, esa es mi respuesta....

http://www.forosdelweb.com/f18/aport...s-pcre-646110/


demás, engorroso?? ... jajaja! (si es muy poderoso, seguro hay que usarlo bien)

Código PHP:
preg_match_all('/archivo\.php\?v=([a-z0-9]+)/i'$html$match);

print_r($match); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 23/12/2008, 14:42
Avatar de Un_Tico  
Fecha de Ingreso: julio-2008
Ubicación: Cartago, Costa Rica
Mensajes: 176
Antigüedad: 15 años, 9 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...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:02.