shreker
22.09.2009, 12:26:35
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
22.09.2009, 12:30:23
str_split i się męcz z tablic±, albo wyrażenie +
preg_replace_callback.
fander
22.09.2009, 15:28:09
<?php
$string = "jaki¶ tekst";
$ret = '';
foreach(split($string) as $key=>$val){
$ret .='<span style="color:#'.color().'">'.$val.'</span>';
}
function color(){
$r = '';
for($i=0;$i<8;$i++){
switch ($rand){
case 10:
$r.='A';
break;
case 11:
$r.='B';
break;
case 12:
$r.='C';
break;
case 13:
$r.='D';
break;
case 14:
$r.='E';
break;
case 15:
$r.='F';
break;
default:
$r .= $rand;
break;
}
}
return $r;
}
?>
@fander. Dlaczego w funkcji color(), w pętli for jest iteracja do 8, a nie do 6
shreker
22.09.2009, 18:55:46
Cytat(fander @ 22.09.2009, 16:28:09 )

[PHP]
pobierz,
plaintext - <?php
- $string = "jaki¶ tekst";
- $ret = '';
- foreach(split($string) as $key=>$val){
- $ret .='<span style="color:#'.color().'">'.$val.'</span>';
- }
- echo $ret;
- function color(){
- $r = '';
- for($i=0;$i<8;$i++){
- $rand = rand(0,15);
- switch ($rand){
- case 10:
- $r.='A';
- break;
- case 11:
- $r.='B';
- break;
- case 12:
- $r.='C';
- break;
- case 13:
- $r.='D';
- break;
- case 14:
- $r.='E';
- break;
- case 15:
- $r.='F';
- break;
- default:
- $r .= $rand;
- break;
- }
- }
- return $r;
- }
- ?>
[PHP]
pobierz,
plaintextWywala 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
22.09.2009, 19:07:43
@up
To funkcja
str_split a nie
splitfunction color(){
return $r.$g.$b;
}
^- Krótszy kod
erix
22.09.2009, 19:07:44
A przyjrzyj się, o jakiej funkcji wspomniałem...
shreker
22.09.2009, 21:08:03
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 - function color(){
- $r = dechex(rand(0, 255));
- $g = dechex(rand(0, 255));
- $b = dechex(rand(0, 255));
- return $r.$g.$b;
- }
[PHP]
pobierz,
plaintext ^- Krótszy kod
bawię się z niedziałaj±c± funkcj±, jak kolega Wicepsik podsun±ł mi gotowe rozwi±zanie. Dzięki :-)