Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]strpos a znak v, Dziwny błąd...
--void--
post 10.06.2008, 21:51:34
Post #1





Goście







  1. <?php
  2. $ciag = 'vvv';
  3. if(strpos($ciag, 'v'))
  4. {
  5. echo 'Wystąpił znak v';
  6. }
  7. else
  8. {
  9. echo 'Nie wystąpił znak v';
  10. }
  11. ?>


Mógłby mi ktoś powiedzieć, dlaczego taki kod wypisuje, że nie ma znaku v? Jeśli dam inną literę lub cyfrę i sprawdzę, to wypisuje poprawnie. Bug? Nie znalazłem nigdzie. Jak sobie z tym radzić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Kicok
post 10.06.2008, 21:53:44
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


strpos" title="Zobacz w manualu PHP" target="_manual -> Return Value


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
nospor
post 10.06.2008, 21:54:53
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl2.php.net/manual/pl/function.strpos.php
Cytat
Find position of first occurrence of a string

Cytat
Ostrzeżenie

Ta funkcja może zwrócić logiczne FALSE, ale także zwykłą wartość rozpoznawaną jako FALSE, na przykład 0 lub "".

Cos zaczyna switac? smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sniezny_wilk
post 10.06.2008, 21:57:05
Post #4





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Cytat(-void- @ 10.06.2008, 20:51:34 ) *
  1. <?php
  2. $ciag = 'vvv';
  3. if(strpos($ciag, 'v'))
  4. {
  5. echo 'Wystąpił znak v';
  6. }
  7. else
  8. {
  9. echo 'Nie wystąpił znak v';
  10. }
  11. ?>


Mógłby mi ktoś powiedzieć, dlaczego taki kod wypisuje, że nie ma znaku v? Jeśli dam inną literę lub cyfrę i sprawdzę, to wypisuje poprawnie. Bug? Nie znalazłem nigdzie. Jak sobie z tym radzić?


strpos nie zwraca true. Zwraca tylko false, jeśli nie znajdzie znaku, lub położenie (jako liczbę) danego znaku w stringu. W Twoim wypadku będzie to liczba 3. A liczba 3 to nie jest to samo co true smile.gif Zrób tak

  1. <?php
  2. $ciag = 'vvv';
  3. $pos = strpos($ciag, 'v');
  4. if(!$pos)
  5. {
  6. echo 'Nie wystąpił znak v';
  7. }
  8. else
  9. {
  10. echo 'Wystąpił znak v, ostania jego pozycja to: '.$pos;
  11. }
  12. ?>


[/php]


--------------------
Go to the top of the page
+Quote Post
nospor
post 10.06.2008, 21:59:17
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
W Twoim wypadku będzie to liczba 3
Dobry gryps nie jest zly winksmiley.jpg
Find position of first occurrence of a string - wg ciebie co to oznacza? pierwszą czy ostatnią pozycje?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sniezny_wilk
post 10.06.2008, 22:01:55
Post #6





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Cytat(nospor @ 10.06.2008, 20:59:17 ) *
Dobry gryps nie jest zly winksmiley.jpg
Find position of first occurrence of a string - wg ciebie co to oznacza? pierwszą czy ostatnią pozycje?


Dobrze nospor że czuwasz. Dzięki Tobie żadna literówka, żaden błąd lub napisanie czegoś inaczej niż miało się na myśli zostanie szybko skorygowane, bo nie przemknie to Twojej uwadze. Dzięki.

Ten post edytował sniezny_wilk 10.06.2008, 22:02:46


--------------------
Go to the top of the page
+Quote Post
nospor
post 10.06.2008, 22:06:34
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
napisanie czegoś inaczej niż miało się na myśli
No tutaj to byl raczej blad niz przejezyczenie.
Zwrocone zostanie 0, gdyz to jest pierwszym indexem wystapienia v.
Ma byc ostatecznie tak:
  1. <?php
  2. $ciag = 'vvv';
  3. if(strpos($ciag, 'v') !== false)
  4. {
  5. echo 'Wystąpił znak v';
  6. }
  7. else
  8. {
  9. echo 'Nie wystąpił znak v';
  10. }
  11. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
--void--
post 10.06.2008, 22:11:04
Post #8





Goście







  1. <?php
  2. $ciag = 'avvv';
  3. if(strpos($ciag, 'v'))
  4. {
  5. echo 'Wystąpił znak v';
  6. }
  7. else
  8. {
  9. echo 'Nie wystąpił znak v';
  10. }
  11. ?>


hehehe, przeszedłem samego siebie - `dziwny błąd ze znakiem v`... Czasami siła autosugestii jest porażająca, testowałem inne przykłady, ale najwidoczniej w żadnym szukany znak nie miał pozycji pierwszej (czyli zerowej) smile.gif
Dzięki wielkie !
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: 14.08.2025 - 08:23