[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Берём заголовки со страниц, проблема с https://
george_te
Здравствуйте, есть скрипт который берёт заголовки со страницы

<?php

function
getTitle($Url){
$str = file_get_contents($Url);
if(strlen($str)>0){
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
return $title[1];
}
}


?>


использую его

$url   = trim(urldecode(@$_REQUEST['url']));
echo getTitle($url);


Проблема заключается в то что когда я ввожу ссылку стиля

http:// или ftp:// я получаю заголовок страницы (title) но вот если ссылка имеет начало https:// он выводит ошыбку

Warning: file_get_contents(https://www.facebook.com) [function.file-get-contents]: failed to open stream: Invalid argument in D:\xampp\htdocs\MyNet\modulebi\short\lib\header.php on line 95

как заставить скрипт чтобы доставал заголовки страницы с https:// ?

я думаю наверное лучше переделать ссылку если https:// что бы менял на http://

но для практики меня интерисует если можно обойтись без этого?


Спасибо за внимание!


AlmazDelDiablo
Это зависит не от https, а от настроек сервера, к которому вы обращаетесь. На нем запрещено получать страницы через file_get_contents(). Вам нужно использовать Curl (если он не блочится Фейсбуком).

PS: Например, вот эта штука http://almazdeldiablo.ru/smiles_grabber.php смайлики получает с форума на https через file_get_contents().

_____________
Блог | VK | GitHub | Twitch
killer8080
Цитата (AlmazDelDiablo @ 16.10.2012 - 10:29)
На нем запрещено получать страницы через file_get_contents(). Вам нужно использовать Curl

Что умеет курл, чего нельзя сделать через file_get_contents?

george_te
скорей всего не установлена openssl, посмотри в phpinfo.
george_te
Цитата (killer8080 @ 16.10.2012 - 08:08)
Цитата (AlmazDelDiablo @ 16.10.2012 - 10:29)
На нем запрещено получать страницы через file_get_contents(). Вам нужно использовать Curl

Что умеет курл, чего нельзя сделать через file_get_contents?

george_te
скорей всего не установлена openssl, посмотри в phpinfo.

Apache Version Apache/2.2.8 (Win32) DAV/2 mod_ssl/2.2.8 OpenSSL/0.9.8g mod_autoindex_color PHP/5.2.5

посмотрел он установлен! не знаю может нужна версия выше? хотя врядли в этом причина есть какието ещё варианты? или остаётся только Curl ?
george_te
Цитата (AlmazDelDiablo @ 16.10.2012 - 07:29)
Это зависит не от https, а от настроек сервера, к которому вы обращаетесь. На нем запрещено получать страницы через file_get_contents(). Вам нужно использовать Curl (если он не блочится Фейсбуком).

PS: Например, вот эта штука http://almazdeldiablo.ru/smiles_grabber.php смайлики получает с форума на https через file_get_contents().

Сейчас посмотрел Curl на примере кода

function file_get_contents_curl($url)
{
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$data = curl_exec($ch);
curl_close($ch);

return $data;
}

$html = file_get_contents_curl("http://example.com/");

//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');

//get and display what you need:
$title = $nodes->item(0)->nodeValue;

$metas = $doc->getElementsByTagName('meta');

for ($i = 0; $i < $metas->length; $i++)
{
$meta = $metas->item($i);
if($meta->getAttribute('name') == 'description')
$description = $meta->getAttribute('content');
if($meta->getAttribute('name') == 'keywords')
$keywords = $meta->getAttribute('content');
}

echo "Title: $title". '<br/><br/>';
echo "Description: $description". '<br/><br/>';
echo "Keywords: $keywords";




выводит все данные Заголовок, ключевые слова и описание! но тоже самое с https:// не дружит! просто пустота! ничего не выводит!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.