Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Czy tekst zawiera się w zmiennej?
Forum PHP.pl > Forum > Przedszkole
axwell
Mam tablicę, np:

  1. <?php
  2. tablica[1] = "kot";
  3. tablica[2] = "pies";
  4. tablica[3] = "mysz";
  5. ?>


i tekst: mysz

Jak sprawdzić teraz czy tekst "mysz" występuje w powyższej tablicy?
ayeo
Witam!

  1. <?php
  2. var_dump( in_array( $tekst, $tablica) );
  3. ?>


Jeśli chcesz znać wartość klucza gdzie znaleziono element
  1. <?php
  2. var_dump( array_search( $tekst, $tablica) );
  3. ?>


Zapraszam również do czytania manuala. Tam w funkcjach dotyczących tablic znajdziesz wszystko co Ci trzeba.

Pozdrawiam!

PS: Twoja tablica ma tylko jeden element bo je nadpisujesz.

PS2: Popraw tytuł na zgodny z zasadami działu Przedszkole (tagi)
Neverhunted
Cytat(ayeo @ 31.01.2009, 21:01:56 ) *
PS: Twoja tablica ma tylko jeden element bo je nadpisujesz.


Racja. Znacznie lepiej byłoby gdybyś w tym wypadku wpisał po prostu tablica[]
axwell
Cytat(ayeo @ 31.01.2009, 21:01:56 ) *
Witam!

  1. <?php
  2. var_dump( in_array( $tekst, $tablica) );
  3. ?>


a po co var_dump() questionmark.gif
ayeo
Po to, żebyś widział wynik działania funkcji. biggrin.gif
Pax95
Jemu chyba chodziło o sprawdzenie z poziomu kodu.
ayeo
Tak, ale wyszedłem z założenia, że przed użyciem w kodzie warto wiedzieć co dana funkcja zwraca. W sensie, że in_array zwraca boola, a array_search zwraca klucz.
axwell
i wszystko jasne winksmiley.jpg

@edit
Przy okazji, żeby nie zakładać nowego tematu, tym razem chciałbym sprawdzić czy znak "/" zawiera się w zmiennej $dane questionmark.gif
Pax95
Jeśli $dane nie jest tablicą, to:
  1. <?php
  2. if ( ereg( '/', $dane ) )
  3. ...
  4. ?>
ayeo
Czemu korzystasz z ereg(); ? preg_match(); jest lepsze pod każdym względem.
axwell
a już znalazłem stronę a w niej powody, dlaczego warto używać preg_match(), a nie ereg()

Cytat
  • Obsługuje dużo więcej wzorców, w tym bardzo przydatne „niezachłanne” dopasowywanie:
    ala.*kota w ereg złapie cały ciąg: „ala ma kota i jaś ma kota” i nic na to nie poradzisz. W preg można złapać samo „ala ma kota” za pomocą /ala.*?kota/ (te slashe to taki poperlowy spadek, patrz niżej).
  • Jest dużo szybsze (to ma znaczenie jeśli robisz parser). Jest nawet specjalny przełącznik S włączający optymalizację podczas kompilacji wzorców.
  • Obsługuje UTF-8 i np. /\pL\pM*/u łapie litery wraz z ich modyfikatorami. To mogą być nawet kilkunastobajtowe kombinacje liter i modyfikatorów, które tworzą wizualnie jeden znak.
  • Obsługuje asercje i warunkowe wzorce. /ala ma (?!kota)/ pasuje do „ala ma psa”, „ala ma kuku na muniu”, ale nie „ala ma kota”.
  • Bezpiecznie działa z danymi binarnymi, podczas gdy ereg() może ucinać stringi.
  • Jest ciągle rozwijane i wspierane, natomiast ereg() uznano za niewypał i jest trzymany tylko z litości nad starymi skryptami.
  • Składnia jest mniejwięcej kompatybilna z JavaScript i oczywiście Perl.
Pax95
Ale pewnie sam wzorzec się zmienia, a ja jeszcze nie spotkałem strony opisującej, jak używać preg_match. Zarzucicie coś?
ayeo
Manual i Google z frazą (perl wyrażenia regularne)
erix
Cytat
a już znalazłem stronę a w niej powody

Najważniejszy, to taki, że w PHP6 ereg_* nie będzie. tongue.gif
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.