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/10rAl
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.512.523%2C55'
   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 = 83
Branch analysis from position: 68
2 jumps found. (Code = 47) Position 1 = 71, Position 2 = 79
Branch analysis from position: 71
2 jumps found. (Code = 47) Position 1 = 80, Position 2 = 82
Branch analysis from position: 80
2 jumps found. (Code = 43) Position 1 = 84, Position 2 = 99
Branch analysis from position: 84
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 99
2 jumps found. (Code = 46) Position 1 = 101, Position 2 = 116
Branch analysis from position: 101
2 jumps found. (Code = 47) Position 1 = 104, Position 2 = 112
Branch analysis from position: 104
2 jumps found. (Code = 47) Position 1 = 113, Position 2 = 115
Branch analysis from position: 113
2 jumps found. (Code = 43) Position 1 = 117, Position 2 = 126
Branch analysis from position: 117
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
Branch analysis from position: 126
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 115
Branch analysis from position: 112
Branch analysis from position: 116
Branch analysis from position: 82
Branch analysis from position: 79
Branch analysis from position: 83
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/10rAl
function name:  parseFloat
number of ops:  131
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, ->83
         68    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~37     !6, 0
         69        BOOL_NOT                                         ~38     ~37
         70      > JMPNZ_EX                                         ~38     ~38, ->79
   34    71    >   INIT_FCALL                                               'strstr'
         72        FETCH_DIM_R                                      ~39     !7, 0
         73        SEND_VAL                                                 ~39
         74        FETCH_DIM_R                                      ~40     !6, 0
         75        SEND_VAL                                                 ~40
         76        DO_ICALL                                         $41     
         77        IS_EQUAL                                         ~42     $41, 0
         78        BOOL                                             ~38     ~42
         79    > > JMPNZ_EX                                         ~38     ~38, ->82
   35    80    >   BOOL_NOT                                         ~43     !4
         81        BOOL                                             ~38     ~43
         82    >   BOOL                                             ~36     ~38
         83    > > JMPZ                                                     ~36, ->99
   36    84    >   FETCH_DIM_R                                      ~44     !5, 0
         85        ASSIGN                                                   !8, ~44
   37    86        INIT_FCALL                                               'str_replace'
         87        SEND_VAL                                                 '.'
         88        SEND_VAL                                                 ''
         89        SEND_VAR                                                 !8
         90        DO_ICALL                                         $46     
         91        ASSIGN                                                   !8, $46
   38    92        INIT_FCALL                                               'str_replace'
         93        SEND_VAL                                                 '%2C'
         94        SEND_VAL                                                 '.'
         95        SEND_VAR                                                 !8
         96        DO_ICALL                                         $48     
         97        ASSIGN                                                   !8, $48
         98      > JMP                                                      ->127
   40    99    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~50     !6, 0
        100      > JMPZ_EX                                          ~50     ~50, ->116
        101    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~51     !5, 0
        102        BOOL_NOT                                         ~52     ~51
        103      > JMPNZ_EX                                         ~52     ~52, ->112
   41   104    >   INIT_FCALL                                               'strstr'
        105        FETCH_DIM_R                                      ~53     !6, 0
        106        SEND_VAL                                                 ~53
        107        FETCH_DIM_R                                      ~54     !7, 0
        108        SEND_VAL                                                 ~54
        109        DO_ICALL                                         $55     
        110        IS_EQUAL                                         ~56     $55, 0
        111        BOOL                                             ~52     ~56
        112    > > JMPNZ_EX                                         ~52     ~52, ->115
   42   113    >   BOOL_NOT                                         ~57     !3
        114        BOOL                                             ~52     ~57
        115    >   BOOL                                             ~50     ~52
        116    > > JMPZ                                                     ~50, ->126
   43   117    >   FETCH_DIM_R                                      ~58     !6, 0
        118        ASSIGN                                                   !8, ~58
   44   119        INIT_FCALL                                               'str_replace'
        120        SEND_VAL                                                 '%2C'
        121        SEND_VAL                                                 ''
        122        SEND_VAR                                                 !8
        123        DO_ICALL                                         $60     
        124        ASSIGN                                                   !8, $60
        125      > JMP                                                      ->127
   47   126    > > RETURN                                                   <false>
   49   127    >   CAST                                          5  ~62     !8
        128        ASSIGN                                                   !9, ~62
   50   129      > RETURN                                                   !9
   51   130*     > RETURN                                                   null

End of function parsefloat

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
196.2 ms | 1411 KiB | 24 Q