Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] sprawdzanie znaku
Forum PHP.pl > Forum > Przedszkole
Crenos
Kombinuje już od kilku dni ale chyba się już poddam i napiszę bo nie wiem gdzie popełniam błąd.
Mam taki kawałek kodu

  1. $tekst = 'Lorem Ipsum jest tekstem stosowanym jako przykładowy wypełniacz w przemyśle poligraficznym. Został po raz pierwszy użyty w XV w. przez nieznanego drukarza do wypełnienia tekstem próbnej książki. Pięć wieków później zaczął być używany przemyśle elektronicznym, pozostając praktycznie niezmienionym. ';
  2. $separator = ".";
  3. $tekst = trim($tekst);
  4.  
  5. for ( $i = 0; $i < strlen( $tekst ); $i++ )
  6. {
  7. $pSeparator = strpos($subTekst, $separator, $off);
  8. $fragemnt = substr($subTekst, 0, $pSeparator);
  9. if ( strlen( $fragemnt ) > 0 )
  10. {
  11. while ( $a < strlen( $fragemnt ))
  12. {
  13.  
  14. if ( $fragemnt[$a] == 'e' )
  15. {
  16. $mamA++;
  17. }
  18. elseif ( $fragemnt[$a] == 't' )
  19. {
  20. $mamT++;
  21. }
  22. if ($mamA == $mamT and $a == strlen( $fragemnt )-1 )
  23. {
  24. $test = 1;
  25. }
  26. elseif ($mamA!= $mamT and $a == strlen( $fragemnt )-1 )
  27. {
  28. $test = 0;
  29. }
  30. $a++;
  31.  
  32. }
  33.  
  34. }
  35. if ( $test == 1)
  36. {
  37. $off+1;
  38. $fragemnt = substr($subTekst, 0, $off);
  39. $subTekst = str_ireplace($fragemnt, '', $subTekst);
  40. $pSeparator =0;
  41. $a=0;
  42. }
  43. elseif ($test ==0)
  44. {$off = $pSeparator+1;}
  45. }
  46.  
  47.  
  48.  


I problem polega na tym, że nie znajduje mi nigdy 't'.
!*!
Zrób to na preg_match_all będzie lepiej.
Crenos
Ale to jest przykład zliczania i potrzebuje go w takiej formie. Znam tę funkcję i już próbowałem i ona nie spałnia swojego zadania bo stworzenie pattern jest niemożliwe ze względu na ilość kombinacji.
!*!
A co chcesz w ogóle osiągnąć?
Crenos
Mam separatory w tablicy. Biorę pierwszy i wyszukuje w tekście występowanie i pobieram tekst do pierwszego wystąpienia separatora, a następnie sprawdzam czy w tym stringu występują określone dwa znaki też pobrane z tablicy. Jeżeli ilość tych znaków jest taka sama lub w ogóle nie występują ten string będzie pobrany i dodatkowo obrobiony a następnie skasowany z całego tekstu, jeżeli nie i ilości są różne szukam kolejnego separatora i sprawdzam te same znaki jeszcze raz. Tablica z separatorami i tablica ze znakami nie są w żadne sposób powiązane, a co zostanie pobrane z tablic określa inna zamienna, która zakładam, że jest losowa bo ilość kombinacji fizycznie nie daje możliwości żeby stworzyć reguły dla każdej osobno.
Mam nadzieje, że w miarę jasno opisałem mój przypadek smile.gif
W tym kodzie podałem po prostu dla uproszczenia konkretny separator oraz znaki.
Oczywiście ten kod nie będzie dziełem sztuki, ale później mam zamiar go przerobić na obiektowy tak, żeby uprościć wyszukiwanie elementów itp. Ale to chwilowo śpiew przyszłości muszę ogarnąć podstawy smile.gif

  1. function licznik($fragment, $znak){
  2. for ( $i = 0; $i < strlen( $fragment ); $i++ ){
  3. if ( $fragment[$i] == $znak ) {
  4. $mamZnak++;
  5. }
  6. return $mamZnak;
  7. }
  8. }


Dobra jak to zaimplementować w kod, który wcześniej podałem. Całość nie jest napisana obiektowo pytanie czy jest w ogóle taka możliwość ? Chodzi o to, żeby wstawić to zamiast tego co jest w pętli while pomiędzy 14 a 30 linijką.
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.