从URL中提取网站标题

时间:2011-06-21 15:05:11

标签: php html

我正在尝试找一个从PHP中输入字段的URL中提取网站标题。例如,如果用户要输入URL http://www.nytimes.com/2009/11/05/sports/baseball/05series.html,我会想要“纽约时报”或“纽约时报”或类似的东西。

我知道提取WINDOW的标题相当容易...例如,我链接的URL将标题为“Yankees 7,Phillies 3 - Back on Top ....”,但这正是我不想要。

为了澄清,这是为了在报价中添加来源。我希望能够在没有大页面URL的情况下为引号添加源,而不仅仅是一个显示“Source”的链接。

任何人都可以帮我吗?提前谢谢。

6 个答案:

答案 0 :(得分:4)

$source = parse_url('http://www.nytimes.com/....', PHP_URL_HOST); // www.nytimes.com

答案 1 :(得分:4)

没有“网站标题”这样的东西,你可以得到

  • 域名(然后是所有者名称)
  • 页面标题
  • 我看到你的元标记“cre”的值为“The New York Times”,但你无处可寻找

您可以做一件事:从网址中提取域名,然后获取第一页的标题

“http://www.nytimes.com/”将为您提供“纽约时报 - 突发新闻,世界新闻和多媒体”

答案 2 :(得分:3)

建立站点名称的URL前缀列表,并从最长到最短依次检查每个前缀。

答案 3 :(得分:3)

你肯定需要一个查找表映射域(nytimes.com)到你的标题“纽约时报”,在这种情况下它很容易做到。

如果你想要一个可以在任何领域的任何链接上工作的方法,那么它有点难,因为PHP本身无法计算出什么是统一标题,因为它会因站点而异到网站。

你可以轻松地分解URL,但是你怎么能将nytimes分解为“NY”和“TIMES”。

您可以找到一个允许您在域中提供内容并获取网站标题的网络服务,但我不知道该网站服务。

你最好只是引用域名,修剪为“NYTIMES.COM”作为来源,或“NYTIMES”。

答案 4 :(得分:3)

您可能希望使用file_get_contents()然后运行匹配来检查任何<title></title>标记之间的文本 - 这将是您显示的标题。

使用parse_url不会返回实际页面标题。

类似的东西:

<?php
$x = file_get_contents("http://google.com");
preg_match("/<title>(.+?)<\/title>/", $x, $match);
echo $match[1];
?>

答案 5 :(得分:2)

使用Simple HTML DOM Parser。这是一个例子:

require "simple_html_dom.php";

$url = "http://www.google.com";

$html = file_get_html( $url );

list( $title ) = $html->find( 'title' );

echo strip_tags( $title ); // Output: "Google"