Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/01/2008, 04:01
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 23 años
Puntos: 41
Re: Capturar cosas de una web externa

El problema principal que vas a tener es que es tabla está paginada. Por ahora hay 3 páginas en donde pueda estar tu alianza. Y tendrás que buscar una por una.

El uso de expresiones regulares tiende a cargar un poco más aún. trata de utilizar funciones simples como strpos(), substr(), etc, etc. en lugar de expresiones regulares. La estructura de la web es muy sencilla y te lo permite.

Por ejemplo, algo como esto debería funcionar:
Código PHP:
<?php

$alianza_buscada 
= 'LD';

$num_paginas = 3;
$pagina = 1;
$encontrado = false;

//Hay que recorrer todas las páginas
while($pagina <= $num_paginas && $encontrado == false){
    
$contenido = file_get_contents('http://www.astrowars-tools.com/tools/rankings.php?ranking=alliance&page='.$pagina);
    
$contenido = str_replace("\t", '', $contenido);

    
$inicio_tabla = strpos($contenido, '</tr>') + 5; 
    
$fin_tabla = strpos($contenido, '</table>');

    
//caracteres totales 
    
$num_caracteres = $fin_tabla - $inicio_tabla;

    
$tabla = trim(substr($contenido, $inicio_tabla, $num_caracteres));

    
$filas = array();
    
$filas = explode('</tr>', $tabla);

    foreach( 
$filas as $fila ){
        
$fila = trim(strip_tags($fila));
        
$columna = explode("\n", $fila);
        if( 
$columna[1] == $alianza_buscada ){
            
$ranking = $columna[0];
            
$encontrado = true;
        }
    }
    
$pagina++;
}

if( 
$encontrado == true ){
    echo 
'La alianza '.$alianza_buscada.' se encuentra en el puesto '.$ranking;
}else{
    echo 
'No se encontró a la alianza '.$alianza_buscada.' en el ranking';
}

?>
Saludos

Última edición por jpinedo; 08/01/2008 a las 04:06