37 votes

Obtenir le titre du site Web via le lien

Remarquez comment Google News a des sources en bas de chaque extrait d'article.

The Guardian - ABC News - Reuters - Bloomberg

Je essaie d'imiter cela.

Par exemple, en soumettant l'URL http://www.washingtontimes.com/news/2010/dec/3/debt-panel-fails-test-vote/ je veux renvoyer The Washington Times

Comment est-ce possible avec php?

61voto

Jose Vega Points 4791

Ma réponse élargit la réponse de @AI W qui propose d'utiliser le titre de la page. Voici le code pour accomplir ce qu'il a dit.

0){
    $str = trim(preg_replace('/\s+/', ' ', $str)); // prend en charge les sauts de ligne à l'intérieur de 
    preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title); // ignorer la casse
    return $title[1];
  }
}
//Exemple:
echo get_title("http://www.washingtontimes.com/");

?>
</code></pre>

<p><strong>RESULTAT</strong></p>

<blockquote>
  <p>Washington Times - Politique, Breaking
  News, Actualités nationales et mondiales</p>
</blockquote>

<p>Comme vous pouvez le constater, ce n'est pas exactement ce que Google utilise, ce qui me fait penser qu'ils obtiennent le nom de domaine d'une URL et le comparent à leur propre liste.</p>

<p><a href="http://www.washingtontimes.com/" rel="noreferrer">http://www.washingtontimes.com/</a> => The Washington Times</p></x-turndown>

33voto

Matthew Points 25748
$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";

Output:

Commission de la dette tombe court sur un vote de test - Washington Times

Bien entendu, vous devriez également mettre en place une gestion basique des erreurs.

5voto

jsumners Points 6247

Vous pourriez récupérer le contenu de l'URL et effectuer une recherche par expression régulière pour le contenu de l'élément title.

(.*)<\/title>/i", $urlContents, $matches);

print($matches[1] . "\n"); // "Exemple Page Web"
?>

Ou, si vous ne voulez pas utiliser une expression régulière (pour faire correspondre quelque chose très proche du haut du document), vous pourriez utiliser un objet DOMDocument:

loadHTML($urlContents);

$title = $dom->getElementsByTagName('title');

print($title->item(0)->nodeValue . "\n"); // "Exemple Page Web"
?>

Je vous laisse décider la méthode que vous préférez.

5voto

Cups Points 3929

En utilisant get_meta_tags() depuis la page d'accueil du domaine, pour NYT renvoie quelque chose qui pourrait nécessiter d'être tronqué mais qui pourrait être utile.

$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 );

inclut la description 'The Washington Times delivers breaking news and commentary on the issues that affect the future of our nation.'

4voto

Novikov Points 2920

Manuel PHP sur cURL

Manuel PHP sur la correspondance de regex Perl

Et en combinant les deux :

]([^<]*)[<][\/]titl/i';

preg_match($pattern, $output, $matches);

print_r($matches);

// close curl resource to free up system resources 
curl_close($ch);      
?>

Je ne peux pas garantir que cet exemple fonctionnera car je n'ai pas PHP ici, mais cela devrait vous aider à démarrer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X