Ver Mensaje Individual
  #9 (permalink)  
Antiguo 09/09/2015, 09:59
Frannixo
 
Fecha de Ingreso: abril-2012
Mensajes: 87
Antigüedad: 12 años
Puntos: 1
Respuesta: Extraer texto de un foro

Este es el código

Código PHP:
public function blueExtract ($reg$lang)
    {    
        for(
$i=0;$i<60;$i++){
        
$html file_get_html("http://".$reg.".battle.net/wow/".$lang."/forum/blizztracker/?page=".$i);
        if(!empty(
$html)){
        
$region $reg;
        
$idioma $lang;
        
$mensaje "";
        
$url "";
        
$autor "";
        
$fecha "";
        
$foro = array();
        
$db =& JFactory::getDBO();
            foreach(
$html->find('tr') as $element) {
    foreach(
$element->find('.content') as $find) {
        
$mensaje $find->plaintext;
        
$mensaje utf8_encode($mensaje);
        
$mensaje utf8_decode($mensaje);
            foreach(
$find->find('a') as $find) {
            
$url "http://eu.battle.net".$find->href;
            }
    }
    foreach(
$element->find('.desc') as $find) {
        
$foro explode("-"$find->plaintext);
    } 
    foreach(
$element->find('.author-wrapper') as $find) {
        
$autor $find->plaintext;
    } 
    foreach(
$element->find('.last-post-time') as $find) {
        
$fecha $find->plaintext;
    }     
        if(
$mensaje != "" && $url != "" && $autor != "" && $fecha != ""){
            
$db =& JFactory::getDBO();
        
$query $db->getQuery(true);
        
$query 'SELECT fecha FROM #__bluetracker where fecha = "'.$fecha.'"';  
        
$db->setQuery($query);  
        
$Bluedb $db->loadResult();  
          
            if(
$Bluedb != $fecha){
                
$query "INSERT INTO #__bluetracker (mensaje_blue, titulo_blue, region, idioma, url, autor, fecha) VALUES ('".$mensaje."', '".$foro[1]."', '".$region."', '".$idioma."', '".$url."', '".$autor."', '".$fecha."')";
                
$db->setQuery($query);
                
$db->query();
    
                    }
                }
            }    
        }else{
$i=60;}
    }
}
    
    public function 
getContent($params$params2)
    {
        
$this->blueExtract($params$params2);
        
$db =& JFactory::getDBO();
        
$query $db->getQuery(true);
        
$query 'SELECT * FROM #__bluetracker where region = "'.$params.'" and idioma = "'.$params2.'"';  
        
$db->setQuery($query);  
        
$Bluedb $db->loadAssocList();  
          echo 
"<table border='0'>";
        foreach(
$Bluedb as $items){
            echo 
"<tr>
            <td><a href='"
.JURI::current()."?post=".$items["id_bluetracker"]."'>".$items["titulo_blue"]." - Por ".$items["autor"]."</a></td>
            </tr>"
;
        }
        echo 
"</table>";
    }
    
    public function 
getPostContent($url$mensaje){
        
        
$htmlPost file_get_html($url); 
                foreach(
$htmlPost->find('.topic-post') as $element) {
            
            foreach(
$element->find(".post-detail") as $find){
                
$texto utf8_encode($find);
                
$texto utf8_decode($texto);
                if (
preg_match("/".substr($mensaje0200)."/i"$texto)) 
                    {
                
$query "INSERT INTO #__post_blue (texto_post_blue, id_bluetracker) VALUES ('".$texto."', '".$url."')";
                
$db->setQuery($query);
                
$db->query();
                    }
                            }
                        }
        }
    public function 
getText($id){
        
        
$db =& JFactory::getDBO();
        
$query $db->getQuery(true);
        
$query 'SELECT * FROM #__bluetracker where id_bluetracker = "'.$id.'"';  
        
$db->setQuery($query);  
        
$Bluedb $db->loadAssocList();  
      
        foreach(
$Bluedb as $items){
                
            
//$this->getPostContent($items["url"],$items["mensaje_blue"]);
            
echo '<p> Escrito por: '.$items["autor"].' con fecha de '$items["fecha"];
            echo 
'<p>'.$items["mensaje_blue"].'</p>';
        }        
    } 

El primer metodo blueExtract, saca los enlaces y la información básica que proporciona la primera url que muestra una lista de los posts del foro.

El metodo getPostContent, es el que intento mediante la url de cada uno que acabo de extraer buscar el mensaje completo. Aquí esta el problema.