Мне нравится использовать SimpleXml с регулярными выражениями, это решение, которое я использую для получения нескольких заголовков ссылок со страницы в созданной мной библиотеке OpenID. Я адаптировал его для работы с заголовком (хотя обычно только один).
function getTitle($sFile)
{
$sData = file_get_contents($sFile);
if(preg_match('/<head.[^>]*>.*<\/head>/is', $sData, $aHead))
{
$sDataHtml = preg_replace('/<(.[^>]*)>/i', strtolower('<$1>'), $aHead[0]);
$xTitle = simplexml_import_dom(DomDocument::LoadHtml($sDataHtml));
return (string)$xTitle->head->title;
}
return null;
}
echo getTitle('/386473/samyi-bystryi-sposob-poluchit-title-v-php');
По иронии судьбы эта страница имеет «тег заголовка» в теге заголовка, который иногда вызывает проблемы с решениями чистого регулярного выражения.
Это решение не является идеальным, так как оно содержит строчные теги, которые могут вызвать проблему для вложенного тега, если форматирование / регистр были важны (например, XML), но есть способы, которые немного более связаны с этой проблемой.