Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak sprawdzić czy zmienna zawiera dane słowo?
Obszczymur
post 24.11.2012, 15:13:45
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 11.12.2011

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


witam,

mam taką zmienną:

  1. $kto = 'olek,bartek,maciej,ola,natalia,dagmara';


jak sprawdzić czy zmienna $kto zawiera słowo 'ola'?
Go to the top of the page
+Quote Post
Szymciosek
post 24.11.2012, 15:17:43
Post #2





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


  1. $kto = 'olek,bartek,maciej,ola,natalia,dagmara';
  2.  
  3. $szukany = strpos($kto, 'asd');
  4.  
  5. if ($szukany)
  6. {
  7. echo 'znaleziono';
  8. }
  9. else
  10. {
  11. echo 'nie znaleziono';
  12. }
Go to the top of the page
+Quote Post
Obszczymur
post 24.11.2012, 15:36:02
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 11.12.2011

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


dzięki wielkie, tylko co gdy zmienną $kto pobieram z tablicy $row['kto'] (z bazy danych)
wtedy juz ten kod nie chce dzialac
Go to the top of the page
+Quote Post
IceManSpy
post 24.11.2012, 15:44:52
Post #4





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


http://php.net/manual/en/function.in-array.php


--------------------
Go to the top of the page
+Quote Post
Pawel_W
post 24.11.2012, 17:26:17
Post #5





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


strpos zwróci 0 jeżeli dla powyższego stringu szukałbyś "olek", wynik powinno się sprawdzać tak:
  1. if(strpos($kto, 'asd') !== false){
  2. echo 'znaleziono';
  3. } else {
  4. echo 'nie znaleziono';
  5. }
Go to the top of the page
+Quote Post
SeaDog
post 25.11.2012, 16:44:49
Post #6





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 15.11.2010

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


a nie lepiej to potraktować wyrażeniem regularnym preg_match?

  1. if(preg_match('/^ola$'/, $row['kto'])) { echo"Ola żyje"; } else { echo"Ola is dead"; }
Go to the top of the page
+Quote Post
Pawel_W
post 25.11.2012, 19:14:33
Post #7





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


Cytat(SeaDog @ 25.11.2012, 16:44:49 ) *
a nie lepiej to potraktować wyrażeniem regularnym preg_match?

  1. if(preg_match('/^ola$'/, $row['kto'])) { echo"Ola żyje"; } else { echo"Ola is dead"; }

po co? raz, że więcej kodu, dwa, że wyrażenia regularne są zasobożerne
Go to the top of the page
+Quote Post
thek
post 26.11.2012, 08:37:45
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pytanie... ola ma być jako całość, czy fragment? Bo wiesz, że zawsze możesz mieć w ciągu przykładowo: mariola. Wtedy strpos też Ci go znajdzie, a nie zawsze jest to pożądane działanie. Jeśli masz taką strukturę, to myślę, że bezpieczniejsze będzie explode po przecinku i potem in_array. Jeśli chesz się "bawić" bez konwersji do tablicy i koniecznie działać na stringu, to musisz rozpatrzyć 3 przypadki umiejscowienia ciągu: na początku czyli w postaci: "ola,", na końcu czyli: ",ola" oraz w środku: ",ola," i dopiero te 3 warunki graniczne sprawdzone dają Ci odpowiedź. Sam oceń co jest prostsze wink.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
markonix
post 26.11.2012, 16:18:56
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


thek, Twoje rozwiązanie bym zmienił bym tak, że do stringa dodałbym na początek i koniec przecinek i wtedy wystarczy szukać ",ola," smile.gif
Brzydko by wyglądało ale przynajmniej jedno szukanie zamiast trzech.


--------------------
Go to the top of the page
+Quote Post
thek
post 26.11.2012, 23:58:50
Post #10





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tylko chciałem wskazać na co ma zwrócić autor uwagę przy przeszukiwaniu niż podrzucać jakąś konkretną implementację. Można oczywiście dołożyć przecinki (jak wspomniałeś) i jest to jakieś podejście do problemu. Myślę, że wydajniejsze to może być niż wyrażenie regularne (proste operacje stringowe są z reguły przynajmniej nieco wydajniejsze niż preg) i na pewno prostsze. Ale czy w przyszłości wygodne i proste w konserwacji? Tu już można polemizować. Co do wyrażenia zaś podanego w wątku, to gratuluję jego autorowi... Każdy nieco siedzący w tej materii, gdy poparzy na nie, a potem na ciąg przykładowy od razu powie, że da błędny wynik. I nie chodzi tu nawet o syntax error. Po prostu ograniczono ciąg zarówno z góry jak i dołu. Ten preg da prawdę tylko i wyłącznie, gdy ciąg wejściowy będzie zgodny z wzorcem wyrażenia, czyli innymi słowy tylko gdy $kto = 'ola' smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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: 17.05.2025 - 10:38