Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc przy klasie php simple html dom parser
Forum PHP.pl > Forum > PHP
Tartut
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.
Ilware
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.
Tartut
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
Crozin
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;
}
Tartut
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");
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.