Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]strpos a znak v
Forum PHP.pl > Forum > Przedszkole
-void-
  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ć?
Kicok
strpos" title="Zobacz w manualu PHP" target="_manual -> Return Value
nospor
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
sniezny_wilk
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]
nospor
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?
sniezny_wilk
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.
nospor
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. ?>
-void-
  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 !
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.