Advertisement
voodooKobra

Rainbow Text

Sep 26th, 2012
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.56 KB | None | 0 0
  1. <?
  2. /* Rainbow Text generator v0.1
  3.  *   Gives a different-colored text-shadow to each character in a string to match a rainbow pattern
  4.  *   i.e. Red -> Yellow -> Green -> Cyan -> Fuschia -> Red
  5.  *   Usage: echo rainbowText($longString);
  6.  */
  7.  
  8.   function rainbowText($input) {
  9.     $l = strlen($input);
  10.     $r = 0;
  11.     $g = 0;
  12.     $b = 0;
  13.     $rg = floor($l / 3);
  14.     $sep = $rg / 2;
  15.     $gb = ceil(2*$l / 3);
  16.     $ret = '';
  17.     for($i = 0; $i < $l; $i++) {
  18.       if($i <= $rg) {
  19.         // First third: Red to green
  20.         if($i >= $sep) {
  21.           $r = floor(255 * (1 - (($i-$sep)/$sep)));
  22.           $g = 255;
  23.         } else {
  24.           $r = 255;
  25.           $g = floor(255 * ($i/$sep));
  26.         }
  27.         $b = 0;
  28.       } elseif($i <= $gb) {
  29.         // Green to blue
  30.         $r = 0;
  31.         if($i >= ($rg + $sep) ) {
  32.           $g = floor(255 * (1 - (($i-($rg + $sep))/($gb-($rg + $sep)))) );
  33.           $b = 255;
  34.         } else {
  35.           $g = 255;
  36.           $b = floor(255 * (1 + (($i-($rg + $sep))/($gb-($rg + $sep)))) );
  37.         }
  38.       } else {
  39.         // Finally: Blue to red
  40.         $g = 0;
  41.         if($i >= ($gb + $sep) ) {
  42.           $b = floor(255 * (1 - (($i-($gb + $sep))/($l-($gb + $sep)))) );
  43.           $r = 255;
  44.         } else {
  45.           $b = 255;
  46.           $r = floor(255 * (1 + (($i-($gb + $sep))/($l-($gb + $sep)))) );
  47.         }
  48.       }
  49.       $ret .= "<span style=\"text-shadow: rgb({$r}, {$g}, {$b}) 0px 1px 1px;\">{$input[$i]}</span><!--\n-->";
  50.     }
  51.     return $ret;
  52.   }
  53. ?>
  54.  
  55. Not sure how useful this will be to anyone else.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement