Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Falowanie tekstu
Forum PHP.pl > Forum > Przedszkole
MagicianVH
Jak mogę otrzymać w PHP efekt "falowania tekstu"? Przykład:
Łańcuch wejściowy: Forum PHP jest super.
Łańcuch wyjściowy: FoRuM pHp JeSt SuPeR
nospor
Jak zobaczyłem tytuł to się zastanawiałem co masz na myśli... Jak zobaczyłem treść to już wiedziałem: ty się po prostu bałeś użyć słowa POKEMON winksmiley.jpg

To nie jest falowany tekst a najzwyklejszy w świecie pokemonowy tekst smile.gif

Jak zrobić? Normalnie lecisz po kolei po tekscię i na zmianę jedną literę robisz dużą a drugą małą.
flashdev
  1. $str = strtolower($str);
  2. for( $i = 0; $i < strlen($str); $i += 2 ){
  3. $str[$i] = strtoupper($str[$i]);
  4. }
Crozin
Yyy... w pętli modyfikujesz każdy ze znaków? Jeżeli to parzyste wywołanie bloku pętli to zamieniasz na wielką literę, jeżeli nieparzyste to na małą?
MagicianVH
Tak właśnie robiłem w C, ale nie widziałem, że w PHP mogę operować na łańcuchu tak jak na tablicy. tongue.gif
athei
Rozwiązanie flashdev nie będzie działać prawidłowo. Przelatywanie po tekście jak po tablicy gdy będą polskie znaki nie zadziała tak jak trzeba.
Po drugie musisz sprawdzać czy jest spacja, bo wyjdzie coś takiego "FoRuM PhP" zamiast "FoRuM pHp".
Użyj http://www.php.net/manual/en/function.substr.php#93884 (w funkcjach mb_ dodaj jeszcze , 'utf-8') oraz
  1. $str2 = "";
  2. $j = 0;
  3. for($i=0; $i<mb_strlen($str, 'utf-8'); $i++)
  4. {
  5. if( charAt($str,$i) == ' '){
  6. $str2.= charAt($str,$i);
  7. continue;
  8. }
  9.  
  10. if($j%2==0) {
  11. $str2.= mb_convert_case(charAt($str,$i), MB_CASE_UPPER, 'UTF-8');
  12. $j++;
  13. }
  14. else {
  15. $str2.= mb_convert_case(charAt($str,$i), MB_CASE_LOWER, 'UTF-8');
  16. $j++;
  17. }
  18.  
  19. }
flashdev
Cytat(athei @ 31.08.2010, 14:03:23 ) *
Rozwiązanie flashdev nie będzie działać prawidłowo. Przelatywanie po tekście jak po tablicy gdy będą polskie znaki nie zadziała tak jak trzeba.


Zgadza się, wiedziałem o tym pisząc ten kod. tutaj rozwiązanie

Cytat(athei @ 31.08.2010, 14:03:23 ) *
Po drugie musisz sprawdzać czy jest spacja, bo wyjdzie coś takiego "FoRuM PhP" zamiast "FoRuM pHp".


Co za różnica? I jedno i drugie to śmieci...

Edit:
Cytat(athei @ 31.08.2010, 14:03:23 ) *

I tak nie uwzględniłeś kropek, enterów, przecinków, dwukropków, apostrofów etc.
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.