Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] strpos - szuka tylko początek
Forum PHP.pl > Forum > Przedszkole
wree
Witam

Mam taki problem. Dość prosty ale męczę się z tym już dobre 4 godziny. Mam taki kod:

  1. $k1 = strpos($tutajszukaj, 'pierwszesłowo' );
  2.  
  3. if ($k1 === false) {
  4.  
  5. echo 'nie znalazłem słowa' ;
  6.  
  7. } else {
  8. echo 'znalazłem słowo';
  9.  
  10. }
  11.  
  12. $k2 = strpos($tutajszukaj, 'drugiesłowo');
  13.  
  14. if ($k2 === false) {
  15.  
  16. echo 'nie znalazłem słowa' ;
  17.  
  18.  
  19. } else {
  20.  
  21. echo 'znalazłem słowo';
  22.  
  23. }


Mój problem tkwi w tym, że szuka w tekście (tak mi się wydaje) do pewnego momentu a potem przestaje i zwraca że nie znalazło chociaż w tekście jest szukane słowo tylko przy końcu tekstu. W każdym tekście znajduje się pierwszesłowo lub drugiesłowo. Gdy występuje jedno albo drugie jest ok, działa. Problem następuje gdy w tekście znajdują się obydwa słowa. Gdy obydwa słowa występują w tekście tylko to które jest pierwsze w kolejności zostaje odnalezione. Chcę by wyświetliło, że znalazło obydwa. Często występują kilkakrotnie w tekście... ale chcę tylko by sprawdziło czy chociaż 1 raz słowo się pojawiło. Wydaje mi się, że chyba powinienem użyć czegoś innego by odnaleźć obydwa. Tylko jest to trochę dziwne, ponieważ napisałem osobny kod dla pierwszego i drugiego słowa.. nie powinny kolidować ze sobą.. chociaż dane pobierają z tego samego miejsca. Nie wiem dlaczego strpos nie szuka do końca tekstu, gdzie ewidentnie znajduje się słowo.

acha i nie chcę użyć preg_match chcę zrozumieć dlaczego nie działa strpos

Może mnie ktoś naprowadzić co robię źle?
cycofiasz
Podaj konkretny przykład stringów szukanych i stringu w którym ma szukać
wree
  1. <?php
  2.  
  3. $tutajszukaj = '[span]AZD365N32H2DSB34N424B5[/span][zadanie]DFGNAG4345N2N5FFCFN55N3[/zadanie][bold]DZCNRE4353M2453M22M[/bold][zadanie]CDNG4WN324C3J[/zadanie][span]CXMDDMG424M345M2MDDM[/span]';
  4.  
  5. $k1 = strpos($tutajszukaj, 'zadanie' );
  6.  
  7. if ($k1 === false) {
  8.  
  9. echo 'nie znalazłem zadanie' ;
  10.  
  11. } else {
  12.  
  13. echo 'znalazłem zadanie';
  14.  
  15. }
  16.  
  17. $k2 = strpos($tutajszukaj, 'span');
  18.  
  19. if ($k2 === false) {
  20.  
  21. echo 'nie znalazłem span' ;
  22.  
  23. } else {
  24.  
  25. echo 'znalazłem span';
  26.  
  27. }
  28.  
  29.  
  30.  
  31.  
  32. ?>



Zyx
  1. <?php
  2. $text = '[span]AZD365N32H2DSB34N424B5[/span][zadanie]DFGNAG4345N2N5FFCFN55N3[/zadanie][bold]DZCNRE4353M2453M22M[/bold][zadanie]CDNG4WN324C3J[/zadanie][span]CXMDDMG424M345M2MDDM[/span]';
  3. if(strpos($text, 'span') !== false)
  4. {
  5. echo 'span found<br/>';
  6. }
  7. if(strpos($text, 'zadanie') !== false)
  8. {
  9. echo 'zadanie found<br/>';
  10. }


Działa. Otoczenie szukanego słowa nie ma żadnego wpływu na wynik działania strpos. Musisz mieć błąd w danych w bazie, albo coś gubić przy sklejaniu.
wree
tak, wiem już, że działa... bo sprawdziłem gdzieś indziej i wszystko jest ok... niestety w tym skrypcie który rozbudowuje nie działa... nie wiem dlaczego... zawsze dostaje jedno albo drugie... nigdy dwóch pozytywnych. No trudno, na razie zostanę przy jednym... jak znajdę odpowiedz to napiszę... dzięki.
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.