Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]kolorowanie liter w stringu
Forum PHP.pl > Forum > Przedszkole
shreker
Pytanie za 100 punktów ;-)

załóżmy że mamy jaki¶ string:

$string = "jaki¶ kolorowy tekst";

Jak można zrobić żeby każda z liter w tym stringu (nie cały string) była innego koloru (mog± się co jaki¶ czas powtarzać kolory). Po od¶wieżeniu żeby te kolory sie zmieniły.
Na pewno trzeba skorzystać z "rand". Dla całego stringu (na raz) sprawa jest prosta, ale jak zrobić to dla pojedyńczych liter ?

Kiedy¶ widziałem co¶ podobnego ale zrobione w Javie, czy da się to zrobić w php?
erix
str_split i się męcz z tablic±, albo wyrażenie + preg_replace_callback.
fander
  1. <?php
  2. $string = "jaki¶ tekst";
  3. $ret = '';
  4. foreach(split($string) as $key=>$val){
  5.  
  6. $ret .='<span style="color:#'.color().'">'.$val.'</span>';
  7.  
  8. }
  9.  
  10. echo $ret;
  11.  
  12. function color(){
  13. $r = '';
  14. for($i=0;$i<8;$i++){
  15. $rand = rand(0,15);
  16. switch ($rand){
  17. case 10:
  18. $r.='A';
  19. break;
  20. case 11:
  21. $r.='B';
  22. break;
  23. case 12:
  24. $r.='C';
  25. break;
  26. case 13:
  27. $r.='D';
  28. break;
  29. case 14:
  30. $r.='E';
  31. break;
  32. case 15:
  33. $r.='F';
  34. break;
  35. default:
  36. $r .= $rand;
  37. break;
  38. }
  39. }
  40. return $r;
  41. }
  42. ?>
Suh
@fander. Dlaczego w funkcji color(), w pętli for jest iteracja do 8, a nie do 6 questionmark.gif
shreker
Cytat(fander @ 22.09.2009, 16:28:09 ) *
[PHP] pobierz, plaintext
  1. <?php
  2. $string = "jaki¶ tekst";
  3. $ret = '';
  4. foreach(split($string) as $key=>$val){
  5. $ret .='<span style="color:#'.color().'">'.$val.'</span>';
  6. }
  7. echo $ret;
  8. function color(){
  9. $r = '';
  10. for($i=0;$i<8;$i++){
  11. $rand = rand(0,15);
  12. switch ($rand){
  13. case 10:
  14. $r.='A';
  15. break;
  16. case 11:
  17. $r.='B';
  18. break;
  19. case 12:
  20. $r.='C';
  21. break;
  22. case 13:
  23. $r.='D';
  24. break;
  25. case 14:
  26. $r.='E';
  27. break;
  28. case 15:
  29. $r.='F';
  30. break;
  31. default:
  32. $r .= $rand;
  33. break;
  34. }
  35. }
  36. return $r;
  37. }
  38. ?>
[PHP] pobierz, plaintext


Wywala mi co¶ takiego:
Warning: Wrong parameter count for split() in c:\usr\krasnal\www\skrypty\pokoloruj string2.php on line 13
Warning: Invalid argument supplied for foreach() in c:\usr\krasnal\www\skrypty\pokoloruj string2.php on line 13
Wicepsik
@up
To funkcja str_split a nie split

  1. function color(){
  2. $r = dechex(rand(0, 255));
  3. $g = dechex(rand(0, 255));
  4. $b = dechex(rand(0, 255));
  5. return $r.$g.$b;
  6. }


^- Krótszy kod
erix
A przyjrzyj się, o jakiej funkcji wspomniałem...
shreker
zmieniłem na str_split i rzeczywi¶cie błędów nie ma, ale nic się nie dzieje kolor wy¶wietla sie cały czas jeden - czarny (żadna z liter nie jest kolorowana).

Cytat(Wicepsik @ 22.09.2009, 20:07:43 ) *
@up
To funkcja str_split a nie split

[PHP] pobierz, plaintext
  1. function color(){
  2. $r = dechex(rand(0, 255));
  3. $g = dechex(rand(0, 255));
  4. $b = dechex(rand(0, 255));
  5. return $r.$g.$b;
  6. }
[PHP] pobierz, plaintext

^- Krótszy kod


bawię się z niedziałaj±c± funkcj±, jak kolega Wicepsik podsun±ł mi gotowe rozwi±zanie. 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.