PHP -> Как спарсить заголовок страницы

Фрукт аватар
8

Добрый вечер, уважаемые. Подскажите пожалуйста, как лучше всего присвоить переменной title html если известен ее адрес?

К примеру, есть адрес страницы: http://sitequest.ru/node/738
Заголовок страницы: "Новый проэкт"

Необходимо переменной $ttl присвоить значение "Новый проеект" (все что между <title></title> )

riddi аватар
54

ну делаете запрос чем-нибудь (например CURL-ом) и достаёте оттуда заголовок регулярным выражением

$ch = curl_init('http://sitequest.ru');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
curl_close($ch);
preg_match('|<title>([^\<]+)<|Uis', $html, $ttl);
$ttl = $ttl[1];

Фрукт аватар
8

Спасибо огромное. Но сталкнулся с проблемой - заголовок этого форума получилось взять, а вот заголовок к примеру с яндекса уже нет.

Вот этой страницы не получается:

yandex.ru/yandsearch?text=php+%D1%86%D0%B8%D0%BA%D0%BB%D1%8B+for&text=46510&text=20243&lr=20243

Пусто почему то.

riddi аватар
54

У меня получается. Ищите в чем конкретно проблема у Вас.

Может быть не приходят данные от курла - проверьте echo $html;

Может быть не находится почему-то title - проверьте что возвращает preg_match (TRUE или FALSE) или существует ли $ttl[1].

Может быть у Вас некорректно работает preg_match в многострочном режиме (s) - у Яндекса видите title содержит переносы строк в начале и конце и, соответственно, это минимум три строки