您需要解析使用DOMDocument DOM树:
<?php
function GetTitle($url)
{
$dom = new DOMDocument;
@$dom->loadHTMLFile($url); // @ supresses warnings
// try to get meta application-name
foreach ($dom->getElementsByTagName("meta") as $meta)
{
$metaName = $meta->attributes->getNamedItem("name");
if (strtolower($metaName->nodeValue) == "application-name")
{
$metaContent = $meta->attributes->getNamedItem("content");
if ($metaContent != NULL)
return $metaContent->nodeValue;
}
}
// title fallback:
foreach ($dom->getElementsByTagName("title") as $title)
return $title->nodeValue;
return NULL;
}
print(GetTitle("http://www.nytimes.com/"));
?>
首先,GetTitle()
寻找一个<meta name="application-name">
标签。如果找不到,它将回退并返回页面标题。
此外,你应该传递基础网址。 F.E.如果你有这样的网址:http://stackoverflow.com/questions/16185145/how-to-retrieve-website-names/16185654#16185654
,你应该使用parse_url剥夺一切,除了http://stackoverflow.com
:
$parsedUrl = parse_url($url);
GetTitle($parsedUrl["scheme"] + "://" + $parsedUrl["host"]);
你可以尝试获取根文档,例如标题'stackoverflow.com' – 2013-04-24 06:47:20
所以你会解析从不同的主机'url'? – 2013-04-24 06:48:44
你需要使用一个人。每个站点都有不同的表达方式,有些使用PHP无法读取的图像,有些使用元属性,有些使用标题,无法通过脚本来确定。 – 2013-04-24 06:58:43