2011-05-24 14 views
5

Tengo problemas para obtener la meta descripción/título de this specific site.Obteniendo título y descripción del meta

Aquí hay un código:

$file = file('http://www.thegooddrugsguide.com/lsd/index.htm'); 
$file = implode("",$file); 
if (preg_match('/<title>(.*?)<\/title>/is',$file,$t)) $title = $t[1]; 

Funciona con otros sitios, pero no con el sitio en cuestión. ¿Cual podría ser el problema?

+7

hacen. NO. UTILIZAR. REGEXES. PARA. PARSING. HTML. –

+2

lo mejor es usar DOM api http://www.php.net/manual/en/book.dom.php –

+0

decir no a las drogas ... a menos que haya –

Respuesta

16

Esto debería funcionar bien:

$doc = new DOMDocument; 
$doc->loadHTMLFile('http://example.com'); 

$title = $doc->getElementsByTagName('title'); 
$title = $title[0]; 

$metas = $doc->getElementsByTagName('meta'); 

foreach ($metas as $meta) { 
    if (strtolower($meta->getAttribute('name')) == 'description') { 
    $description = $meta->getAttribute('value'); 
    } 
} 

Más información: http://www.php.net/manual/en/book.dom.php

Editar: esta versión más corta también puede trabajar para encontrar la descripción:

$xpath = new DOMXPath($doc); 
$description = $xpath->query('//meta[@name="description"]/@content'); 
+0

¿Funciona DOMDocument con documentos HTML o solo con XHTML? –

+1

@Salman A Ambos. – seriousdev

+0

+1 ... xpath4tw – Hannes

3
$url = "http://www.thegooddrugsguide.com/lsd/index.htm";  
$tags = get_meta_tags($url); 
$description = $tags["description"]; 
+0

Agregue una descripción, no solo el código – Jens

Cuestiones relacionadas