2012-07-08 18 views

Respuesta

10

Me tomó un vistazo a la DOM HTML Analizador, trato:

$html = new simple_html_dom(); 
$html->load_file('xxx'); //put url or filename in place of xxx 
$title = $html->find('title'); 
echo $title->plaintext; 

$descr = $html->find('meta[description]'); 
echo $descr->plaintext; 
+3

Este código no funciona para mí (¿ya? --- la respuesta es anterior a la última versión de la biblioteca), porque find puede devolver más de un elemento. Para que funcione, necesito agregar un segundo parámetro con un valor de 0 para encontrar: $ html-> find ('title', 0) -> plain text; – BlaM

+0

no funciona .... –

+0

la respuesta es incorrecta - vea mi respuesta probada a continuación – Innate

2
$html = new simple_html_dom(); 
$html->load_file('xxx'); 
//put url or filename in place of xxx 
$title = array_shift($html->find('title'))->innertext; 
echo $title; 
$descr = array_shift($html->find("meta[name='description']"))->content; 
echo $descr; 
+0

¿Ha probado este código? –

+0

¡sí! probado este código [mira mi blog] (http: // softuses.com/how-to-extract-title-and-meta-description-using-php-simple-html-dom-parser) – liuqing

+0

Utilicé este código y funcionó en la extracción del título. Gracias –

5
$html = new simple_html_dom(); 
$html->load_file('http://www.google.com'); 
$title = $html->find('title',0)->innertext; 

$html->find('title') devuelve un vector

lo que debe utilizar $html->find('title',0), también lo hace el meta [Descripción ]

21
$html = new simple_html_dom(); 
$html->load_file('some_url'); 

//To get Meta Title 
$meta_title = $html->find("meta[name='title']", 0)->content; 

//To get Meta Description 
$meta_description = $html->find("meta[name='description']", 0)->content; 

//To get Meta Keywords 
$meta_keywords = $html->find("meta[name='keywords']", 0)->content; 

NOTA: ¡Los nombres de metaetiquetas son sensibles a mayúsculas y minúsculas!

+0

Spot on. +1 para agarrar por etiqueta y atributo. – timofey

0

puede utilizar el código php y tan fácil de saber. como aquí

$ result = 'site.com'; $ etiquetas = get_meta_tags (resultado "html /".$");

+0

esto no funcionará para el compañero de título :) –

+0

esta función falla horriblemente en algunos casos – Innate

1

La respuesta correcta es:

$html = str_get_html($html); 
$descr = $html->find("meta[name=description]", 0); 
$description = $descr->content; 

El código anterior se pone HTML en un formato de objeto, entonces el método de búsqueda busca una etiqueta meta con la descripción nombre, y por último que necesita para devolver el valor de la el contenido de la metaetiqueta, no el texto inerte o el texto sin formato como los describen otros.

Esto ha sido probado y utilizado en código live. Mejor

+0

¿Qué var debe contener la URL web? –

3

tomada de la solución de LeiXC anterior, es necesario utilizar la clase simple HTML DOM:

$dom = new simple_html_dom(); 
$dom->load_file('websiteurl.com');// put your own url in here for testing 
$html = str_get_html($dom); 
$descr = $html->find("meta[name=description]", 0); 
$description = $descr->content; 
echo $description; 

He probado este código y sí que es sensible a mayúsculas (algunas etiquetas meta utilizan una D mayúscula para la descripción)

Aquí está comprobando algunos errores los errores ortográficos:

if(is_object($html->find("meta[name=description]", 0))){ 
    echo $html->find("meta[name=description]", 0)->content; 
} elseif(is_object($html->find("meta[name=Description]", 0))){ 
    echo $html->find("meta[name=Description]", 0)->content; 
} 
0
$html->find('meta[name=keywords]',0)->attr['content']; 
$html->find('meta[name=description]',0)->attr['content']; 
0

he encontrado la EA sy manera de tomar Descripción

$html = new simple_html_dom(); 
$html->load_file('your_url'); 
$title = $html->load('title')->simpletext; //<title>**Text from here**</title> 
$description = $html->load("meta[name='description']", 0)->simpletext; //<meta name="description" content="**Text from here**"> 

Si su línea contiene espacios adicionales, entonces prueba este

$title = trim($title); 
$description = trim($description); 
Cuestiones relacionadas