useful tag name keywords importantes ejemplo copyright php function url hyperlink page-title

php - name - seo meta tags



Obtener el título del sitio web a través del enlace (10)

Alternativamente, puede usar Simple Html Dom Parser :

<?php require_once(''simple_html_dom.php''); $html = file_get_html(''http://www.washingtontimes.com/news/2010/dec/3/debt-panel-fails-test-vote/''); echo $html->find(''title'', 0)->innertext . "<br>/n"; echo $html->find(''div[class=entry-content]'', 0)->innertext;

Observe cómo Google News tiene fuentes en la parte inferior de cada extracto del artículo.

The Guardian - Noticias de ABC - Reuters - Bloomberg

Estoy tratando de imitar eso.

Por ejemplo, al enviar la URL http://www.washingtontimes.com/news/2010/dec/3/debt-panel-fails-test-vote/ Quiero volver The Washington Times

¿Cómo es esto posible con php?


Intento evitar las expresiones regulares cuando no es necesario, he creado una función para obtener el título del sitio web con curl y DOMDocument a continuación.

function website_title($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // some websites like Facebook need a user agent to be set. curl_setopt($ch, CURLOPT_USERAGENT, ''Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36''); $html = curl_exec($ch); curl_close($ch); $dom = new DOMDocument; @$dom->loadHTML($html); $title = $dom->getElementsByTagName(''title'')->item(''0'')->nodeValue; return $title; } echo website_title(''https://www.facebook.com/'');

Más arriba se muestra lo siguiente: Bienvenido a Facebook: inicie sesión, regístrese o aprenda más.


Mi respuesta se expande en la respuesta de @AI W al usar el título de la página. A continuación está el código para lograr lo que dijo.

<?php function get_title($url){ $str = file_get_contents($url); if(strlen($str)>0){ $str = trim(preg_replace(''//s+/'', '' '', $str)); // supports line breaks inside <title> preg_match("//<title/>(.*)/<//title/>/i",$str,$title); // ignore case return $title[1]; } } //Example: echo get_title("http://www.washingtontimes.com/"); ?>

SALIDA

Washington Times - Política, noticias de última hora, EE. UU. Y noticias mundiales

Como puede ver, no es exactamente lo que Google está usando, así que esto me lleva a creer que obtienen el nombre de host de una URL y lo asocian a su propia lista.

http://www.washingtontimes.com/ => The Washington Times


Obtenga el título del sitio web a través del enlace y convierta el título a la codificación de caracteres utf-8:

https://gist.github.com/kisexu/b64bc6ab787f302ae838

function getTitle($url) { // get html via url $ch = curl_init(); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $html = curl_exec($ch); curl_close($ch); // get title preg_match(''/(?<=<title>).+(?=<//title>)/iU'', $html, $match); $title = empty($match[0]) ? ''Untitled'' : $match[0]; $title = trim($title); // convert title to utf-8 character encoding if ($title != ''Untitled'') { preg_match(''/(?<=charset/=).+(?=/")/iU'', $html, $match); if (!empty($match[0])) { $charset = str_replace(''"'', '''', $match[0]); $charset = str_replace("''", '''', $charset); $charset = strtolower( trim($charset) ); if ($charset != ''utf-8'') { $title = iconv($charset, ''utf-8'', $title); } } } return $title; }


Puede buscar los contenidos de la URL y hacer una búsqueda de expresiones regulares para el contenido del elemento de title .

<?php $urlContents = file_get_contents("http://example.com/"); preg_match("/<title>(.*)<//title>/i", $urlContents, $matches); print($matches[1] . "/n"); // "Example Web Page" ?>

O bien, si no desea usar una expresión regular (para hacer coincidir algo muy cerca de la parte superior del documento), podría usar un objeto DOMDocument :

<?php $urlContents = file_get_contents("http://example.com/"); $dom = new DOMDocument(); @$dom->loadHTML($urlContents); $title = $dom->getElementsByTagName(''title''); print($title->item(0)->nodeValue . "/n"); // "Example Web Page" ?>

Dejo en tus manos decidir qué método te gusta más.



Usando get_meta_tags () desde la página de inicio del dominio, NYT recupera algo que podría necesitar truncamiento, pero podría ser útil.

$b = "http://www.washingtontimes.com/news/2010/dec/3/debt-panel-fails-test-vote/" ; $url = parse_url( $b ) ; $tags = get_meta_tags( $url[''scheme''].''://''.$url[''host''] ); var_dump( $tags );

incluye la descripción ''The Washington Times ofrece noticias de última hora y comentarios sobre los problemas que afectan el futuro de nuestra nación''.


escribí una función para manejarlo:

function getURLTitle($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($ch); $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); $charset = ''''; if($contentType && preg_match(''//bcharset=(.+)/b/i'', $contentType, $matches)){ $charset = $matches[1]; } curl_close($ch); if(strlen($content) > 0 && preg_match(''//<title/b.*/>(.*)/<//title/>/i'', $content, $matches)){ $title = $matches[1]; if(!$charset && preg_match_all(''//<meta/b.*/>/i'', $content, $matches)){ //order: //http header content-type //meta http-equiv content-type //meta charset foreach($matches as $match){ $match = strtolower($match); if(strpos($match, ''content-type'') && preg_match(''//bcharset=(.+)/b/'', $match, $ms)){ $charset = $ms[1]; break; } } if(!$charset){ //meta charset=utf-8 //meta charset=''utf-8'' foreach($matches as $match){ $match = strtolower($match); if(preg_match(''//bcharset=([/'"])?(.+)/1?/'', $match, $ms)){ $charset = $ms[1]; break; } } } } return $charset ? iconv($charset, ''utf-8'', $title) : $title; } return $url; }

recupera el contenido de la página web e intenta obtener la codificación del conjunto de caracteres del documento por (de la prioridad más alta a la más baja):

  1. Un parámetro HTTP "charset" en un campo "Content-Type".
  2. Una declaración META con "http-equiv" establecido en "Content-Type" y un valor establecido para "charset".
  3. El atributo charset establecido en un elemento que designa un recurso externo.

(ver http://www.w3.org/TR/html4/charset.html )

y luego usa iconv para convertir el título a codificación utf-8 .


Manual de PHP en cURL

<?php $ch = curl_init("http://www.example.com/"); $fp = fopen("example_homepage.txt", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); ?>

Manual de PHP sobre coincidencia de expresiones regulares de Perl

<?php $subject = "abcdef"; $pattern = ''/^def/''; preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3); print_r($matches); ?>

Y uniendo esos dos:

<?php // create curl resource $ch = curl_init(); // set url curl_setopt($ch, CURLOPT_URL, "example.com"); //return the transfer as a string curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // $output contains the output string $output = curl_exec($ch); $pattern = ''/[<]title[>]([^<]*)[<][//]titl/i''; preg_match($pattern, $output, $matches); print_r($matches); // close curl resource to free up system resources curl_close($ch); ?>

No puedo prometer que este ejemplo funcionará, ya que no tengo PHP aquí, pero debería ayudarlo a comenzar.


$doc = new DOMDocument(); @$doc->loadHTMLFile(''http://www.washingtontimes.com/news/2010/dec/3/debt-panel-fails-test-vote/''); $xpath = new DOMXPath($doc); echo $xpath->query(''//title'')->item(0)->nodeValue."/n";

Salida:

La comisión de la deuda se queda corta en el voto de prueba - Washington Times

Obviamente, también debe implementar el manejo básico de errores.