3v4l.org

run code in 300+ PHP versions simultaneously
<?php $n = '1,512,523.55'; function parseFloat($ptString) { if (strlen($ptString) == 0) { return false; } $pString = str_replace(" ", "", $ptString); if (substr_count($pString, ",") > 1) $pString = str_replace(",", "", $pString); if (substr_count($pString, ".") > 1) $pString = str_replace(".", "", $pString); $pregResult = array(); $commaset = strpos($pString,','); if ($commaset === false) {$commaset = -1;} $pointset = strpos($pString,'.'); if ($pointset === false) {$pointset = -1;} $pregResultA = array(); $pregResultB = array(); if ($pointset < $commaset) { preg_match('#(([-]?[0-9]+(\.[0-9])?)+(,[0-9]+)?)#', $pString, $pregResultA); } preg_match('#(([-]?[0-9]+(,[0-9])?)+(\.[0-9]+)?)#', $pString, $pregResultB); if ((isset($pregResultA[0]) && (!isset($pregResultB[0]) || @strstr($preResultA[0],$pregResultB[0]) == 0 || !$pointset))) { $numberString = $pregResultA[0]; $numberString = str_replace('.','',$numberString); $numberString = str_replace(',','.',$numberString); } elseif (isset($pregResultB[0]) && (!isset($pregResultA[0]) || @strstr($pregResultB[0],$preResultA[0]) == 0 || !$commaset)) { $numberString = $pregResultB[0]; $numberString = str_replace(',','',$numberString); } else { return false; } $result = (float)$numberString; return $result; } echo parseFloat($n);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/oRVMN
function name:  (null)
number of ops:  6
compiled vars:  !0 = $n
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '1%2C512%2C523.55'
   53     1        INIT_FCALL                                               'parsefloat'
          2        SEND_VAR                                                 !0
          3        DO_FCALL                                      0  $2      
          4        ECHO                                                     $2
          5      > RETURN                                                   1

Function parsefloat:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 5
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 17, Position 2 = 23
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 35
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 43, Position 2 = 44
Branch analysis from position: 43
2 jumps found. (Code = 43) Position 1 = 51, Position 2 = 52
Branch analysis from position: 51
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 61
Branch analysis from position: 56
2 jumps found. (Code = 46) Position 1 = 68, Position 2 = 85
Branch analysis from position: 68
2 jumps found. (Code = 47) Position 1 = 71, Position 2 = 81
Branch analysis from position: 71
2 jumps found. (Code = 47) Position 1 = 82, Position 2 = 84
Branch analysis from position: 82
2 jumps found. (Code = 43) Position 1 = 86, Position 2 = 101
Branch analysis from position: 86
1 jumps found. (Code = 42) Position 1 = 131
Branch analysis from position: 131
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 101
2 jumps found. (Code = 46) Position 1 = 103, Position 2 = 120
Branch analysis from position: 103
2 jumps found. (Code = 47) Position 1 = 106, Position 2 = 116
Branch analysis from position: 106
2 jumps found. (Code = 47) Position 1 = 117, Position 2 = 119
Branch analysis from position: 117
2 jumps found. (Code = 43) Position 1 = 121, Position 2 = 130
Branch analysis from position: 121
1 jumps found. (Code = 42) Position 1 = 131
Branch analysis from position: 131
Branch analysis from position: 130
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 119
Branch analysis from position: 116
Branch analysis from position: 120
Branch analysis from position: 84
Branch analysis from position: 81
Branch analysis from position: 85
Branch analysis from position: 61
Branch analysis from position: 52
Branch analysis from position: 44
Branch analysis from position: 35
Branch analysis from position: 23
filename:       /in/oRVMN
function name:  parseFloat
number of ops:  135
compiled vars:  !0 = $ptString, !1 = $pString, !2 = $pregResult, !3 = $commaset, !4 = $pointset, !5 = $pregResultA, !6 = $pregResultB, !7 = $preResultA, !8 = $numberString, !9 = $result
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   RECV                                             !0      
    6     1        STRLEN                                           ~10     !0
          2        IS_EQUAL                                                 ~10, 0
          3      > JMPZ                                                     ~11, ->5
    7     4    > > RETURN                                                   <false>
   10     5    >   INIT_FCALL                                               'str_replace'
          6        SEND_VAL                                                 '+'
          7        SEND_VAL                                                 ''
          8        SEND_VAR                                                 !0
          9        DO_ICALL                                         $12     
         10        ASSIGN                                                   !1, $12
   12    11        INIT_FCALL                                               'substr_count'
         12        SEND_VAR                                                 !1
         13        SEND_VAL                                                 '%2C'
         14        DO_ICALL                                         $14     
         15        IS_SMALLER                                               1, $14
         16      > JMPZ                                                     ~15, ->23
   13    17    >   INIT_FCALL                                               'str_replace'
         18        SEND_VAL                                                 '%2C'
         19        SEND_VAL                                                 ''
         20        SEND_VAR                                                 !1
         21        DO_ICALL                                         $16     
         22        ASSIGN                                                   !1, $16
   15    23    >   INIT_FCALL                                               'substr_count'
         24        SEND_VAR                                                 !1
         25        SEND_VAL                                                 '.'
         26        DO_ICALL                                         $18     
         27        IS_SMALLER                                               1, $18
         28      > JMPZ                                                     ~19, ->35
   16    29    >   INIT_FCALL                                               'str_replace'
         30        SEND_VAL                                                 '.'
         31        SEND_VAL                                                 ''
         32        SEND_VAR                                                 !1
         33        DO_ICALL                                         $20     
         34        ASSIGN                                                   !1, $20
   18    35    >   ASSIGN                                                   !2, <array>
   20    36        INIT_FCALL                                               'strpos'
         37        SEND_VAR                                                 !1
         38        SEND_VAL                                                 '%2C'
         39        DO_ICALL                                         $23     
         40        ASSIGN                                                   !3, $23
   21    41        TYPE_CHECK                                    4          !3
         42      > JMPZ                                                     ~25, ->44
         43    >   ASSIGN                                                   !3, -1
   23    44    >   INIT_FCALL                                               'strpos'
         45        SEND_VAR                                                 !1
         46        SEND_VAL                                                 '.'
         47        DO_ICALL                                         $27     
         48        ASSIGN                                                   !4, $27
   24    49        TYPE_CHECK                                    4          !4
         50      > JMPZ                                                     ~29, ->52
         51    >   ASSIGN                                                   !4, -1
   26    52    >   ASSIGN                                                   !5, <array>
   27    53        ASSIGN                                                   !6, <array>
   29    54        IS_SMALLER                                               !4, !3
         55      > JMPZ                                                     ~33, ->61
   30    56    >   INIT_FCALL                                               'preg_match'
         57        SEND_VAL                                                 '%23%28%28%5B-%5D%3F%5B0-9%5D%2B%28%5C.%5B0-9%5D%29%3F%29%2B%28%2C%5B0-9%5D%2B%29%3F%29%23'
         58        SEND_VAR                                                 !1
         59        SEND_REF                                                 !5
         60        DO_ICALL                                                 
   32    61    >   INIT_FCALL                                               'preg_match'
         62        SEND_VAL                                                 '%23%28%28%5B-%5D%3F%5B0-9%5D%2B%28%2C%5B0-9%5D%29%3F%29%2B%28%5C.%5B0-9%5D%2B%29%3F%29%23'
         63        SEND_VAR                                                 !1
         64        SEND_REF                                                 !6
         65        DO_ICALL                                                 
   33    66        ISSET_ISEMPTY_DIM_OBJ                         0  ~36     !5, 0
         67      > JMPZ_EX                                          ~36     ~36, ->85
         68    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~37     !6, 0
         69        BOOL_NOT                                         ~38     ~37
         70      > JMPNZ_EX                                         ~38     ~38, ->81
   34    71    >   BEGIN_SILENCE                                    ~39     
         72        INIT_FCALL                                               'strstr'
         73        FETCH_DIM_R                                      ~40     !7, 0
         74        SEND_VAL                                                 ~40
         75        FETCH_DIM_R                                      ~41     !6, 0
         76        SEND_VAL                                                 ~41
         77        DO_ICALL                                         $42     
         78        END_SILENCE                                              ~39
         79        IS_EQUAL                                         ~43     $42, 0
         80        BOOL                                             ~38     ~43
         81    > > JMPNZ_EX                                         ~38     ~38, ->84
   35    82    >   BOOL_NOT                                         ~44     !4
         83        BOOL                                             ~38     ~44
         84    >   BOOL                                             ~36     ~38
         85    > > JMPZ                                                     ~36, ->101
   36    86    >   FETCH_DIM_R                                      ~45     !5, 0
         87        ASSIGN                                                   !8, ~45
   37    88        INIT_FCALL                                               'str_replace'
         89        SEND_VAL                                                 '.'
         90        SEND_VAL                                                 ''
         91        SEND_VAR                                                 !8
         92        DO_ICALL                                         $47     
         93        ASSIGN                                                   !8, $47
   38    94        INIT_FCALL                                               'str_replace'
         95        SEND_VAL                                                 '%2C'
         96        SEND_VAL                                                 '.'
         97        SEND_VAR                                                 !8
         98        DO_ICALL                                         $49     
         99        ASSIGN                                                   !8, $49
        100      > JMP                                                      ->131
   40   101    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~51     !6, 0
        102      > JMPZ_EX                                          ~51     ~51, ->120
        103    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~52     !5, 0
        104        BOOL_NOT                                         ~53     ~52
        105      > JMPNZ_EX                                         ~53     ~53, ->116
   41   106    >   BEGIN_SILENCE                                    ~54     
        107        INIT_FCALL                                               'strstr'
        108        FETCH_DIM_R                                      ~55     !6, 0
        109        SEND_VAL                                                 ~55
        110        FETCH_DIM_R                                      ~56     !7, 0
        111        SEND_VAL                                                 ~56
        112        DO_ICALL                                         $57     
        113        END_SILENCE                                              ~54
        114        IS_EQUAL                                         ~58     $57, 0
        115        BOOL                                             ~53     ~58
        116    > > JMPNZ_EX                                         ~53     ~53, ->119
   42   117    >   BOOL_NOT                                         ~59     !3
        118        BOOL                                             ~53     ~59
        119    >   BOOL                                             ~51     ~53
        120    > > JMPZ                                                     ~51, ->130
   43   121    >   FETCH_DIM_R                                      ~60     !6, 0
        122        ASSIGN                                                   !8, ~60
   44   123        INIT_FCALL                                               'str_replace'
        124        SEND_VAL                                                 '%2C'
        125        SEND_VAL                                                 ''
        126        SEND_VAR                                                 !8
        127        DO_ICALL                                         $62     
        128        ASSIGN                                                   !8, $62
        129      > JMP                                                      ->131
   47   130    > > RETURN                                                   <false>
   49   131    >   CAST                                          5  ~64     !8
        132        ASSIGN                                                   !9, ~64
   50   133      > RETURN                                                   !9
   51   134*     > RETURN                                                   null

End of function parsefloat

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
160.46 ms | 1411 KiB | 24 Q