3v4l.org

run code in 300+ PHP versions simultaneously
<?php // http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB function strtocolour($tstr) { $crc = unpack('L', hash('crc32', $tstr, true))[1]; $Hp = $crc / (0xFFFFFFFF / 6); $S = 0.8; // change as desired $V = 0.8; // change as desired $C = $V*$S; $X = $C*(1 - abs(fmod($Hp, 2) - 1)); $m = $V - $C; $i = 1+min(5, intval($Hp)); $comp = [ [$C, $X, 0], [$X, $C, 0], [ 0, $C, $X], [ 0, $X, $C], [$X, 0, $C], [$C, 0, $X]][$i]; $r = intval(255*($m + $comp[0])); $g = intval(255*($m + $comp[1])); $b = intval(255*($m + $comp[2])); return sprintf("#%02X%02X%02X", $r, $g, $b); } function test($tstr) { echo '<span style="color:"'.strtocolour($tstr).'">'; echo htmlspecialchars($tstr); echo '</span>'; } test('I'); test('am'); test('a'); test('fluffy'); test('bunny'); ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NYNX9
function name:  (null)
number of ops:  16
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   32     0  E >   INIT_FCALL                                               'test'
          1        SEND_VAL                                                 'I'
          2        DO_FCALL                                      0          
   33     3        INIT_FCALL                                               'test'
          4        SEND_VAL                                                 'am'
          5        DO_FCALL                                      0          
   34     6        INIT_FCALL                                               'test'
          7        SEND_VAL                                                 'a'
          8        DO_FCALL                                      0          
   35     9        INIT_FCALL                                               'test'
         10        SEND_VAL                                                 'fluffy'
         11        DO_FCALL                                      0          
   36    12        INIT_FCALL                                               'test'
         13        SEND_VAL                                                 'bunny'
         14        DO_FCALL                                      0          
   37    15      > RETURN                                                   1

Function strtocolour:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NYNX9
function name:  strtocolour
number of ops:  87
compiled vars:  !0 = $tstr, !1 = $crc, !2 = $Hp, !3 = $S, !4 = $V, !5 = $C, !6 = $X, !7 = $m, !8 = $i, !9 = $comp, !10 = $r, !11 = $g, !12 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   RECV                                             !0      
    5     1        INIT_FCALL                                               'unpack'
          2        SEND_VAL                                                 'L'
          3        INIT_FCALL                                               'hash'
          4        SEND_VAL                                                 'crc32'
          5        SEND_VAR                                                 !0
          6        SEND_VAL                                                 <true>
          7        DO_ICALL                                         $13     
          8        SEND_VAR                                                 $13
          9        DO_ICALL                                         $14     
         10        FETCH_DIM_R                                      ~15     $14, 1
         11        ASSIGN                                                   !1, ~15
    6    12        DIV                                              ~17     !1, 7.15828e+8
         13        ASSIGN                                                   !2, ~17
    7    14        ASSIGN                                                   !3, 0.8
    8    15        ASSIGN                                                   !4, 0.8
    9    16        MUL                                              ~21     !4, !3
         17        ASSIGN                                                   !5, ~21
   10    18        INIT_FCALL                                               'abs'
         19        INIT_FCALL                                               'fmod'
         20        SEND_VAR                                                 !2
         21        SEND_VAL                                                 2
         22        DO_ICALL                                         $23     
         23        SUB                                              ~24     $23, 1
         24        SEND_VAL                                                 ~24
         25        DO_ICALL                                         $25     
         26        SUB                                              ~26     1, $25
         27        MUL                                              ~27     !5, ~26
         28        ASSIGN                                                   !6, ~27
   11    29        SUB                                              ~29     !4, !5
         30        ASSIGN                                                   !7, ~29
   12    31        INIT_FCALL                                               'min'
         32        SEND_VAL                                                 5
         33        CAST                                          4  ~31     !2
         34        SEND_VAL                                                 ~31
         35        DO_ICALL                                         $32     
         36        ADD                                              ~33     1, $32
         37        ASSIGN                                                   !8, ~33
   14    38        INIT_ARRAY                                       ~35     !5
         39        ADD_ARRAY_ELEMENT                                ~35     !6
         40        ADD_ARRAY_ELEMENT                                ~35     0
         41        INIT_ARRAY                                       ~36     ~35
   15    42        INIT_ARRAY                                       ~37     !6
         43        ADD_ARRAY_ELEMENT                                ~37     !5
         44        ADD_ARRAY_ELEMENT                                ~37     0
         45        ADD_ARRAY_ELEMENT                                ~36     ~37
   16    46        INIT_ARRAY                                       ~38     0
         47        ADD_ARRAY_ELEMENT                                ~38     !5
         48        ADD_ARRAY_ELEMENT                                ~38     !6
         49        ADD_ARRAY_ELEMENT                                ~36     ~38
   17    50        INIT_ARRAY                                       ~39     0
         51        ADD_ARRAY_ELEMENT                                ~39     !6
         52        ADD_ARRAY_ELEMENT                                ~39     !5
         53        ADD_ARRAY_ELEMENT                                ~36     ~39
   18    54        INIT_ARRAY                                       ~40     !6
         55        ADD_ARRAY_ELEMENT                                ~40     0
         56        ADD_ARRAY_ELEMENT                                ~40     !5
         57        ADD_ARRAY_ELEMENT                                ~36     ~40
   19    58        INIT_ARRAY                                       ~41     !5
         59        ADD_ARRAY_ELEMENT                                ~41     0
         60        ADD_ARRAY_ELEMENT                                ~41     !6
         61        ADD_ARRAY_ELEMENT                                ~36     ~41
         62        FETCH_DIM_R                                      ~42     ~36, !8
   13    63        ASSIGN                                                   !9, ~42
   20    64        FETCH_DIM_R                                      ~44     !9, 0
         65        ADD                                              ~45     !7, ~44
         66        MUL                                              ~46     ~45, 255
         67        CAST                                          4  ~47     ~46
         68        ASSIGN                                                   !10, ~47
   21    69        FETCH_DIM_R                                      ~49     !9, 1
         70        ADD                                              ~50     !7, ~49
         71        MUL                                              ~51     ~50, 255
         72        CAST                                          4  ~52     ~51
         73        ASSIGN                                                   !11, ~52
   22    74        FETCH_DIM_R                                      ~54     !9, 2
         75        ADD                                              ~55     !7, ~54
         76        MUL                                              ~56     ~55, 255
         77        CAST                                          4  ~57     ~56
         78        ASSIGN                                                   !12, ~57
   23    79        INIT_FCALL                                               'sprintf'
         80        SEND_VAL                                                 '%23%2502X%2502X%2502X'
         81        SEND_VAR                                                 !10
         82        SEND_VAR                                                 !11
         83        SEND_VAR                                                 !12
         84        DO_ICALL                                         $59     
         85      > RETURN                                                   $59
   24    86*     > RETURN                                                   null

End of function strtocolour

Function test:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/NYNX9
function name:  test
number of ops:  13
compiled vars:  !0 = $tstr
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   26     0  E >   RECV                                             !0      
   27     1        INIT_FCALL                                               'strtocolour'
          2        SEND_VAR                                                 !0
          3        DO_FCALL                                      0  $1      
          4        CONCAT                                           ~2      '%3Cspan+style%3D%22color%3A%22', $1
          5        CONCAT                                           ~3      ~2, '%22%3E'
          6        ECHO                                                     ~3
   28     7        INIT_FCALL                                               'htmlspecialchars'
          8        SEND_VAR                                                 !0
          9        DO_ICALL                                         $4      
         10        ECHO                                                     $4
   29    11        ECHO                                                     '%3C%2Fspan%3E'
   30    12      > RETURN                                                   null

End of function test

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
174.27 ms | 1407 KiB | 33 Q