我正在尝试找一个从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”的链接。
任何人都可以帮我吗?提前谢谢。
答案 0 :(得分:4)
$source = parse_url('http://www.nytimes.com/....', PHP_URL_HOST); // www.nytimes.com
答案 1 :(得分:4)
没有“网站标题”这样的东西,你可以得到
您可以做一件事:从网址中提取域名,然后获取第一页的标题
“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"