您需要解析使用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