Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] IF & SWITCH
Forum PHP.pl > Forum > Gotowe rozwiązania
dr_grucha
O co chodzi: Nie wiem jak to przerobic. Te dwie funkcje(if+switch) działają w sposób następujący (użyty jest tu parser XML): 1.Kiedy znacznik czy_book == 1 to znaczy, ze jestesmy wewnatrz glownego tagu 2.Switch przeskakuje do kolejnych wezluch wewnatrz glownego za pomoca "case" i przepisuje do tablicy wartosci z poszczegolnych wezlow (chyba jasne).
I teraz ja nie wiem jak moge to przerobic, aby otrzymac cos na zasadzie wyszukiwarki czyli aby do tablicy przepisywal tylko te wartosci wezlow w tagach w ktorych jest okreslona wartosc np:
<person id=1> - to jest tag
<imie>Szymon</imie>
<nazwisko>Gruszecki</nazwisko> - to sa wezly
</person>
<person id=2>
<imie>Szymon2222</imie>
<nazwisko>Gruszecki2222</nazwisko>
</person>

[Czyli analogia do powyzszego przykladu - jezeli zadam wartosc wezla <imie> o wartosi Szymon to zeby skrypt przepisal do tablicy caly <person id=1>

Ponizej kod (jezeli bedzie trzeba wiecej - piszcie:
  1. <?php
  2. if($czy_book == 1){
  3. switch($act_tag){
  4. case 'TYTUL': $ksiazki[$int] -> tytul .= $text; break;
  5. case 'AUTORZY': $ksiazki[$int] -> autorzy .= $text; break;
  6. case 'WYDAWCA': $ksiazki[$int] -> wydawca .= $text; break;
  7. case 'OPRAWA': $ksiazki[$int] -> oprawa .= $text; break;
  8. case 'WYDANIE': $ksiazki[$int] -> wydanie .= $text; break;
  9. case 'ROKWYD': $ksiazki[$int] -> rokwyd .= $text; break;
  10. case 'OBJETOSC': $ksiazki[$int] -> objetosc .= $text; break;
  11. case 'OPIS': $ksiazki[$int] -> opis .= $text; break;
  12. case 'TYP_PUB': $ksiazki[$int] -> typ_pub .= $text; break;
  13. case 'TEMATYKA': $ksiazki[$int] -> tematyka .= $text; break;
  14.  }
  15. }
  16.  
  17. ?>
Wave
Musisz się pobawić wyrażeniami regularnymi.
Mniej więcej tak to będzie wyglądało:
  1. <?php
  2. function szukaj($imie, $text) {
  3. preg_match_all(&#092;"/<person id=(..?)>.*?<imie>(.*?)</imie>.*?<nazwisko>(.*?)</nazwisko>.*?</person>.*?/si\", $text, $person, PREG_SET_ORDER);
  4.  
  5. $znalezione=array();
  6. for($x=count($person), $y=0; $y<$x; $y++)
  7. {
  8. if(eregi($imie, $person[$y][2]))
  9. {
  10. $znalezione[][0]=$person[$y][0];
  11. $znalezione[][1]=$person[$y][1];
  12. }
  13. }
  14. return($znalezione);
  15. }
  16. print_r($znalezione);
  17.  
  18. ?>

Tablica znalezione zawiera imie nazwisko i numer znacznika person w którym znaleziono podane imie.
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.