Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Pobieranie title z linka
Majkelo23
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (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:

  1. function get_url_title($url)
  2. {
  3. $path = file_get_contents($url);
  4. if ( preg_match('/<title>(.*?)<\/title>/', $path, $array) )
  5. {
  6. return $array[1];
  7. }
  8. else
  9. {
  10. return false;
  11. }
  12. }


Ten post edytował Majkelo23 28.05.2012, 16:17:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ethann
post
Post #2





Grupa: Zarejestrowani
Postów: 56
Pomógł: 18
Dołączył: 7.04.2012

Ostrzeżenie: (0%)
-----


Mam parę uwag odnośnie regexpa.
w preg_match() jako ograniczniki wzoru zastosuj np. @ (znak małpy), unikniesz backslashowania często występujących znaków. Znak zapytania nie jest potrzebny, sama gwiazdka oznacza, że chcesz w tym miejscu dowolną ilość elementów (łącznie z jego brakiem).
  1. preg_match('@<title>(.*)</title>@', $path, $array)


ad kodu u mnie wyrzuca warning w przypadku nk.
Cytat
Warning: file_get_contents(http://nk.pl/) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in D:\Programms\wamp\skrypty\getUrlTitle.php on line 5.

Najprawdopodobniej jest parę rzeczy sprawdzanych (chodzi o nagłówki HTTP, np. przeglądarka). Jeśli chcesz z tego serwisu wydobyć adres skorzystaj np. z curl'a i wyślij fałszywe nagłówki.


#edit
U mnie w przypadku WP/Interii/Onet, śmiga bez problemu.

ew. sprawdź czy nie masz ustawionego w php.ini:
allow_url_fopen = Off
ale to raczej odpada bo by Ci nic nie zewnętrznego nie czytało.

Ten post edytował ethann 28.05.2012, 17:16:42
Go to the top of the page
+Quote Post

Posty w temacie
- Majkelo23   [PHP] Pobieranie title z linka   28.05.2012, 16:17:40
- - ethann   Mam parę uwag odnośnie regexpa. w preg_match() jak...   28.05.2012, 17:10:40
- - Majkelo23   [PHP] pobierz, plaintext <?php function ge...   28.05.2012, 17:25:00
- - ethann   pokaż co zwraca [PHP] pobierz, plaintext var_dump...   28.05.2012, 17:30:28
- - Majkelo23   Kodstring(14) "http://onet.pl...   28.05.2012, 17:32:31
- - ethann   hm no fakt, zwróć zamiast [PHP] pobierz, plaintext...   28.05.2012, 17:34:33
- - Majkelo23   Cholera, znalazłem problem. Te wszystkie strony ko...   28.05.2012, 17:34:59
- - greycoffey   Musisz podążać za przekierowaniami, lub napisać fu...   28.05.2012, 17:43:37
- - Majkelo23   Własnie po napisaniu pytania, sam wpadłem na to, ż...   28.05.2012, 17:46:32
- - ethann   Zależy. możesz to zrobić w prosty sposób samemu wp...   28.05.2012, 17:46:41
- - Majkelo23   Dla http://onet.pl/ już działa - dopisuje "ww...   28.05.2012, 17:49:58
- - ethann   przede wszystkim włącz ostrzeżenia w php.ini, albo...   28.05.2012, 17:52:34
- - Majkelo23   Niestety, nic to nie dało.   28.05.2012, 17:55:33
- - IProSoft   Gotowa i działająca: [PHP] pobierz, plaintext fun...   28.05.2012, 17:56:03
- - Majkelo23   Problem w tym, że mam coś wyłączonego na serwerze,...   28.05.2012, 18:00:46
- - IProSoft   Sprawdziłem funkcję z postu: http://forum.php.pl/i...   28.05.2012, 18:16:07
- - Majkelo23   Facet na innym forum też twierdził, że mu działa t...   28.05.2012, 18:36:19
- - IProSoft   Niestety nikt bez jakichkolwiek komunikatów/błędów...   28.05.2012, 18:38:18
- - Majkelo23   Ta, tylko że ja nie mam żadnych błędów/komunikatów...   28.05.2012, 20:14:10


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 20:27