Pobieranie title z linka

0

Potrzebuję funkcji, która wyciągnie mi title danej strony, jeśli z kolei się nie uda to zwróci po prostu false.
Próbowałem najprostszym sposobem - file_get_contents() - za cholerę nie chce działać. Są wyjątki, np. nk.pl przeczyta, ale onet.pl / interia.pl / wp.pl nie potrafi odczytać, zwraca mi false. Czym to jest spowodowane ?

Kod wygląda tak:

function get_url_title($url)
{
	$path = file_get_contents($url);
	if ( preg_match('/<title>(.*?)<\/title>/', $path, $array) )
	{
		return $array[1];
	}
	else
	{
		return false;
	}
}
0

Jest to spowodowane używaniem regexów do parsowania stron. W danej chwili dla danej strony możesz zrobić regexa do wyciągania informacji, ale do tak ogólnych rzeczy zdecydowanie lepszym i nawet prostszym rozwiązaniem będzie użycie parsera html.

Edit: oczywiście podajesz URL z http:// ?

0
echo get_url_title('http://onet.pl');

Jak widać, tak.

Możesz trochę jaśniej ?

0

SOA#1 (Wirtualna Polska - www.wp.plPortal INTERIA.PL - wiÄcej niż siÄ spodziewasz!Onet - informacje, rozrywka, emocje)

 <?php
function get_url_title($url)
{
        $path = file_get_contents($url);
        if ( preg_match('/<title>(.*?)<\/title>/', $path, $array) )
        {
                return $array[1];
        }
        else
        {
                return false;
        }
}
echo get_url_title('http://wp.pl');
echo get_url_title('http://interia.pl');
echo get_url_title('http://onet.pl');
?>
0

Nie jest to możliwe, aby powyższy kod działał, dlatego, że te strony musza mieć w linku jeszcze "www". Właśnie do tego doszedłem i wiem dlaczego moje rozwiązanie nie chciało działać. Problem mam tylko z tym, jak to teraz zrobić bardziej uniwersalne :)

0

Jakoś działa ;) 7478195224fc3b1a8d8f55.png

0

To kwestia obsługi redirectów...

0

No to dziwne ;) U mnie nie działa, jeśli strona wymaga w adresie 'www.'. Dlatego nk.pl mi działało bo nie wymaga 'www' w adresie. Z kolei jesli dopiszę 'www' do adresu onet'u to onet działa, ale znów nk nie dziala.

1 użytkowników online, w tym zalogowanych: 0, gości: 1