Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pomoc przy klasie php simple html dom parser
Tartut
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 29.03.2011

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


Mam takie dwie pętle:
  1. foreach($code->find('td.list_team a') as $e)
  2. {
  3. $linki[] = $e->href;
  4. }
  5.  
  6. foreach($code->find('td.list_team script') as $e)
  7. {
  8. $druzyny[] = $e->innertext;
  9. }

Ale chciałbym aby było można to zapisać w jednej pętli:
  1. foreach($code->find('td.list_team a, td.list_team script') as $e)
  2. {
  3. //...
  4. }

Ale nie wiem jak dodać do tablicy poprawnie elementy.

Pozdrawiam.
Go to the top of the page
+Quote Post
Ilware
post
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


jaka baza danych? użyj złączenia na stringach np postgress to => || , działa to tak że dajesz pole||' '||pole2 as pola.Masz nazwy pól ze spacją pośrodku.


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
Tartut
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 29.03.2011

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


Nie kożystam z bazy danych. Pobieram dane z pewnej strony. Tam na stronie jest kod:
  1. <td class="list_team"><a href="http://link.com"><script language="JavaScript">/* kod js */</script></a></td>

Muszę wyciągnąć href oraz to co jest pomiędzy script. W dwóch odcielnych pętlach zrobiłem, ale chcę troszkę zoptymalizować i mięc to w jednej pętli. Jeżeli nie da razy to trudno.
PS: wiem że mogę to zrobić wyrażeniami regularnymi, ale na razie powstrzymam się przed ich użyciem tongue.gif
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Wyrażenia regularne nie nadają się do parsowania kodu HTML.
2. W pętli dobierasz się do wszystkich elementów td.list_team, a następnie do elementu a oraz script względem aktualnie przetwarzanego elementu.
3. Pseudokod:
Kod
foreach(code->find("td.list_team") as td) {
  href = td->find("a")[0]->getAttribute("href");
  innerText = td->find("script")[0]->innerText;

  results[href] = innerText;
}


Ten post edytował Crozin 19.01.2012, 09:03:04
Go to the top of the page
+Quote Post
Tartut
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 29.03.2011

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


Wielkie dzięki. Generowanie strony z 5s spadło do 0.4s. biggrin.gif
Może się komuś przyda.. zamiast:
Kod
href = td->find("a")[0]->getAttribute("href");

powinno być
Kod
href = td->find("a",0)->getAttribute("href");
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 Aktualny czas: 21.08.2025 - 00:54