Foros del Web » Programando para Internet » PHP »

Problema al extraer title con file_get_contents()

Estas en el tema de Problema al extraer title con file_get_contents() en el foro de PHP en Foros del Web. Buenas... Quiero extraer el title de una url con file_get_contents(). En un principio hice esto: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php   function extraer_title ...
  #1 (permalink)  
Antiguo 10/08/2011, 16:16
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Problema al extraer title con file_get_contents()

Buenas...

Quiero extraer el title de una url con file_get_contents().

En un principio hice esto:
Código PHP:
Ver original
  1. <?php
  2.  
  3. function extraer_title($filtro) {
  4.  
  5. $param = "|<[s]*title[s]*>([^<]+)<[s]*/[s]*title[s]*>|Ui";
  6.  
  7. if( preg_match($param, $filtro, $result) ) {
  8.  
  9.                return $result[1];
  10.  
  11. }else{
  12.  
  13.                return false;
  14.  
  15. }
  16.  
  17. }
  18.  
  19. $url= "http://www.url.com";
  20.  
  21. $recorrer = file_get_contents($url);
  22.  
  23. $title = extraer_title($recorrer);
  24.  
  25. echo $title;

...funcionaba bien pero tenia el problema de q algunas paginas bloqueaban el uso de file_get... y con unos ejemplos del user abimaelrc llegue a esto:


Código PHP:
Ver original
  1. function extraer_title($filtro) {
  2.  
  3. $param = "|<[s]*title[s]*>([^<]+)<[s]*/[s]*title[s]*>|Ui";
  4.  
  5. if( preg_match($param, $filtro, $result) ) {
  6.  
  7.                return $result[1];
  8.  
  9. }else{
  10.  
  11.                return false;
  12.  
  13. }
  14.  
  15. }
  16.  
  17. $options = array('http' =>
  18.                     array( 'header' => 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6' . PHP_EOL )
  19.                     );
  20.                    
  21.                     $context = stream_context_create($options);
  22.  
  23.                     $page = file_get_contents('http://www.url.com', false, $context);
  24.  
  25.                     $title = extraer_title($page);
  26.                                        
  27. echo $title;


....luego surgio el problema de q mi pagina web, al hacer uso de esa funcion y de file_get... me cargaba muy lenta y ahi es donde me quede.

Lo ultimo q hice es esto:

Código PHP:
Ver original
  1. $options = array('http' =>
  2.     array( 'header' => 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6' . PHP_EOL )
  3. );
  4.  
  5. $context = stream_context_create($options);
  6.  
  7. $page = file_get_contents('http://www.url.com', false, $context);
  8.  
  9. $doc = new DOMDocument();
  10. @$doc->loadHTML($page);
  11. $nodes = $doc->getElementsByTagName('title');
  12.  
  13. $title = $nodes->item(0)->nodeValue;
  14.  
  15. echo $title;

...pero sigue cargando muy lento todo.

Como lo puedo solucionar?

Gracias.

Saludos.
  #2 (permalink)  
Antiguo 10/08/2011, 16:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema al extraer title con file_get_contents()

pero ya te explique. El problema es que tiene que cargar toda la pagina antes de verificar el codigo fuente. Hay una forma de evitar que cargue toda la pagina y lo muestro en uno de los ejemplos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 10/08/2011, 16:42
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema al extraer title con file_get_contents()

Si, ya te entendi, lo q pasa q hice el post antes de ver tu segunda respuesta y me estoy fijando en los ejemplos de tu post.
  #4 (permalink)  
Antiguo 10/08/2011, 16:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema al extraer title con file_get_contents()

jejeje es verdad, es mejor que lo separes de aquel tema Asi no nos limitamos en las respuestas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 10/08/2011, 17:02
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema al extraer title con file_get_contents()

A ver, puede ser q lo q me dijiste sea esto?:

Código PHP:
Ver original
  1. file_get_contents("http://forosdelweb.com/",null,null,0,1);

...donde limite el numero de caracteres a cargarse, estoy en lo correcto?
  #6 (permalink)  
Antiguo 11/08/2011, 13:33
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Problema al extraer title con file_get_contents()

Por el momento lo solucione guardando el title y su link a la bd de la forma:

<strong>title</strong>link...

Luego lo explodeo tomando como referencia la etiqueta de cierre </strong> y funciona bien.

Etiquetas: html, title
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 02:18.