Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Złączenie wszystkiego w jedną całość
daggerinho
post 30.12.2009, 06:19:14
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.12.2009

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


No więc zaczynamy. Tworzę serwis o śmiesznej grze - Tibia, ale, że to jest jedyna gra w jaką czasami pogrywam to padło właśnie na nią. Więc na początek chce zrobić takią podstronę, skrpt, który po wpisaniu swojego nicku będzie pobierał ze strony tibia.com informacje na temat postaci o tym nicku i wyświetlał je u mnie na stronie.

Z pobieraniem informacji miałem dylemat czy użyć cURL'a czy normlanego non-wrapperowego sposobu. Padło na ten drugi.
  1. <?php
  2. $postac = $_POST['postac'];
  3. ...
  4. ?>


Oczywiście jest to połączone z formularzem html'a. Jedyny problem jest taki, że pobiera on mi cały layout strony, i podpina go pod ten plik, w którym mam powyższy skrypt PHP. Teraz utknąłem bo nie wiem jak rozwiązać pewną rzecz, a mianowicie:
Gdy skrypt już pobierze tą stronę, to następny skrypt ma za zadanie wybrać z tej strony każdą informację o postaci osobno za pomocą wyrażeń regularnych (preg_match itd). No tylko, że każda postać ma inną nazwe, poziom itd. czyli każda postać będzie miała inny html. I teraz nie wiem jak to rozwiązać żeby było najlepiej i najprościej. Niestety chyba w zmiennej nie jestem w stanie zamknąć takiej ilosci html-a... zawsze wyskakuje jakiś błąd parsera... Proszę o pomoc.
Pozdrawiam.

Ten post edytował daggerinho 30.12.2009, 06:20:51
Go to the top of the page
+Quote Post
darko
post 30.12.2009, 06:50:08
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat
Z pobieraniem informacji miałem dylemat czy użyć cURL'a czy normlanego non-wrapperowego sposobu. Padło na ten drugi.

normlany non-wrapperowy sposób - jak widać - też korzysta z curla.

Cytat
za pomocą wyrażeń regularnych (preg_match itd).

przynajmniej wiesz, gdzie szukać

Cytat
No tylko, że każda postać ma inną nazwe, poziom itd. czyli każda postać będzie miała inny html.

Czy aby na pewno ?

Problem nie sprowadza się do "zamknięcia jakiejś ilości htmla w zmiennej", ale do napisania odpowiedniego wyrażenia regularnego. Na podstawie danych, które podajesz nie da się takowego utworzyć. Opisz dokładniej swój problem.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
jareeny
post 30.12.2009, 11:30:33
Post #3





Grupa: Zarejestrowani
Postów: 226
Pomógł: 23
Dołączył: 2.10.2007
Skąd: Słupsk

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


Hmm. Tak po patrzeniu na losową stronę gracza:
http://www.tibia.com/community/?subtopic=c...ikapo+Eleandril

Spoglądając w źrodło, wydaje mi się, że musisz za pomocą wyrażenia wyciągnąc wszystko spomiędzy <tbody></tbody> i potem dalej parsować tak, żeby uzyskać wszystkie informacje

Ten post edytował jareeny 30.12.2009, 11:31:07


--------------------
banan wszyscy.
Go to the top of the page
+Quote Post
Wicepsik
post 30.12.2009, 12:30:39
Post #4





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Nie lepiej zwykły file_get_contents ?

Dam Ci podpowiedz.

  1. $postac = 'Pikapo Eleandril';
  2. $page = file_get_contents('http://www.tibia.com/community/?subtopic=characters&name='.$postac);
  3. preg_match("#<TD WIDTH=20%>Name:</TD><TD>([a-zA-Z ']+)</TD>#", $page, $nick);
  4.  


--------------------
Go to the top of the page
+Quote Post
daggerinho
post 30.12.2009, 14:59:55
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.12.2009

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


@Wicepsik

No tak, Twoj sposób jest całkiem dobry ale pozostaje jedna kwestia. Funkcja, którą podałeś zwraca Array () no czyli nic, bo w subject nie ma nicku postaci, a jak wiadomo każda postać ma inny nick czyli należałoby zamknąć ten kod html w jakiejś zmiennej albo coś... nie wiem właśnie jak zrobić, żeby subject sam sie dobierał w zależności od kodu html każdego z osobna gracza...
Oczywiście mój problem może być banalny, i za to przepraszam ale ja sobie z tym poradzic nie mogę :|.
Go to the top of the page
+Quote Post
jareeny
post 30.12.2009, 20:32:44
Post #6





Grupa: Zarejestrowani
Postów: 226
Pomógł: 23
Dołączył: 2.10.2007
Skąd: Słupsk

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


Ale HTML "opakowujący" ten nick i inne rzeczy nie zmienia się i możesz to wszystko wyciągnać wyrażeniem, więc ja nie wiem o co chodzi... no chyba właśnie po to są wyrażenia regularne, albo jestem źle poinformowany :/


--------------------
banan wszyscy.
Go to the top of the page
+Quote Post
daggerinho
post 30.12.2009, 20:49:20
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 28.12.2009

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


Jarenny, ale ten preg_match nic nie wyciąga bo po instrukcji print_r($nick) na ekran printuje się Array(0) i tyle, a nie Pikapo Eleandril:|

  1. <?php
  2. $postac = 'Pikapo Eleandril';
  3. $page = file_get_contents('http://www.tibia.com/community/?subtopic=characters&name='.$postac);
  4. preg_match("#<TD WIDTH=20%>Name:</TD><TD>([a-zA-Z ']+)</TD>#", $page, $nick);
  5. ?>



@Edit...
Okej, powyższy skrypt był poprawny jednak nie działał on z powodu spacji, w jedno członowych nickach wszystko działa.
Dziękuje za pomoc.

Ten post edytował daggerinho 30.12.2009, 20:50:38
Go to the top of the page
+Quote Post
Wicepsik
post 30.12.2009, 21:28:37
Post #8





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


U mnie działa.


--------------------
Go to the top of the page
+Quote Post
emtiej
post 31.12.2009, 21:11:11
Post #9





Grupa: Zarejestrowani
Postów: 207
Pomógł: 18
Dołączył: 12.04.2009
Skąd: Rypin

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


  1. <?PHP
  2.  
  3. $postac = 'Guaio';
  4.  
  5. $page = file_get_contents('http://www.tibia.com/community/?subtopic=characters&name='.$postac);
  6.  
  7. $info = preg_match("#<TD WIDTH=20%>Name:</TD><TD>([a-zA-Z ']+)</TD>#", $page, $nick);
  8.  
  9. print_r($nick);
  10.  
  11. ?>


Wynik to:

Kod
Array (     [0] => Name:Guaio     [1] => Guaio )

Czyli działa. Rozwiązanie proste i skuteczne. smile.gif

Ja dodałbym jeszcze jakąś instrukcję warunkową, w zmiennej $postac nie może być spacji, trzeba spacje zamienić na + i kiedy będzie występowała spacja to wyrażenie regularne będzie nieco inaczej wyglądało.

Ten post edytował emtiej 31.12.2009, 21:13:49
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 11.06.2024 - 09:00