3v4l.org

run code in 300+ PHP versions simultaneously
<?php $prices = array(chr(8364).' 45.000,-', '45 USD', 'CHF 0,77', chr(36).' 23000', 'USD 23000', '46.000,95', '6', '4,3', chr(8364).' 45,00', chr(36).' 46foobar', chr(8364).' 45,-', chr(8364).' 45', chr(8364).' 45,00', '45 '.chr(8364), '45,- '.chr(8364), '45,00 '.chr(8364), '45.000 '.chr(8364), chr(36).' 45.000,--', chr(8364).' 4.000,00', 'hallo welt', '20.00 €'); $currencies = '(?:EUR|USD|GBP|CHF|FR|SFR|\\'.chr(8364).'|\\'.chr(36).'|\\'.chr(163).')'; $price = '(?:(?:(?:[1-9][0-9]{0,2}(?:\.|,)?)+(?:[0-9]{3})|(?:[0-9]|[1-9][0-9]{1,2}))(?:(?:\.|,)(?:[0-9]{2}|\-{1,2}))?)'; $regex = '(?:^|\s+)(?:(?:(?:'.$currencies.'\s?)'.$price.')|(?:'.$price.'(?:\s?'.$currencies.')))(?:\s+|$)'; foreach($prices as $check) { echo str_pad($check, 15, ' ', STR_PAD_RIGHT).' '.(preg_match('/'.$regex.'/i', $check, $match) ? 'matched: ' : 'did not match.').(count($match) ? $match[0] : '')."\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 34, Position 2 = 64
Branch analysis from position: 34
2 jumps found. (Code = 78) Position 1 = 35, Position 2 = 64
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 52
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 59
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 60
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 59
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 52
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 59
Branch analysis from position: 56
Branch analysis from position: 59
Branch analysis from position: 64
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 64
filename:       /in/WuFXF
function name:  (null)
number of ops:  66
compiled vars:  !0 = $prices, !1 = $currencies, !2 = $price, !3 = $regex, !4 = $check, !5 = $match
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   INIT_ARRAY                                       ~6      '%AC+45.000%2C-'
          1        ADD_ARRAY_ELEMENT                                ~6      '45+USD'
          2        ADD_ARRAY_ELEMENT                                ~6      'CHF+0%2C77'
          3        ADD_ARRAY_ELEMENT                                ~6      '%24+23000'
          4        ADD_ARRAY_ELEMENT                                ~6      'USD+23000'
          5        ADD_ARRAY_ELEMENT                                ~6      '46.000%2C95'
          6        ADD_ARRAY_ELEMENT                                ~6      '6'
          7        ADD_ARRAY_ELEMENT                                ~6      '4%2C3'
          8        ADD_ARRAY_ELEMENT                                ~6      '%AC++45%2C00'
          9        ADD_ARRAY_ELEMENT                                ~6      '%24+46foobar'
    3    10        ADD_ARRAY_ELEMENT                                ~6      '%AC+45%2C-'
         11        ADD_ARRAY_ELEMENT                                ~6      '%AC+45'
         12        ADD_ARRAY_ELEMENT                                ~6      '%AC+45%2C00'
         13        ADD_ARRAY_ELEMENT                                ~6      '45%C2%A0%AC'
         14        ADD_ARRAY_ELEMENT                                ~6      '45%2C-+%AC'
         15        ADD_ARRAY_ELEMENT                                ~6      '45%2C00+%AC'
         16        ADD_ARRAY_ELEMENT                                ~6      '45.000+%AC'
    4    17        ADD_ARRAY_ELEMENT                                ~6      '%24+45.000%2C--'
         18        ADD_ARRAY_ELEMENT                                ~6      '%AC+4.000%2C00'
         19        ADD_ARRAY_ELEMENT                                ~6      'hallo+welt'
         20        ADD_ARRAY_ELEMENT                                ~6      '20.00+%E2%82%AC'
    2    21        ASSIGN                                                   !0, ~6
    5    22        ASSIGN                                                   !1, '%28%3F%3AEUR%7CUSD%7CGBP%7CCHF%7CFR%7CSFR%7C%5C%AC%7C%5C%24%7C%5C%A3%29'
    6    23        ASSIGN                                                   !2, '%28%3F%3A%28%3F%3A%28%3F%3A%5B1-9%5D%5B0-9%5D%7B0%2C2%7D%28%3F%3A%5C.%7C%2C%29%3F%29%2B%28%3F%3A%5B0-9%5D%7B3%7D%29%7C%28%3F%3A%5B0-9%5D%7C%5B1-9%5D%5B0-9%5D%7B1%2C2%7D%29%29%28%3F%3A%28%3F%3A%5C.%7C%2C%29%28%3F%3A%5B0-9%5D%7B2%7D%7C%5C-%7B1%2C2%7D%29%29%3F%29'
    7    24        CONCAT                                           ~10     '%28%3F%3A%5E%7C%5Cs%2B%29%28%3F%3A%28%3F%3A%28%3F%3A', !1
         25        CONCAT                                           ~11     ~10, '%5Cs%3F%29'
         26        CONCAT                                           ~12     ~11, !2
         27        CONCAT                                           ~13     ~12, '%29%7C%28%3F%3A'
         28        CONCAT                                           ~14     ~13, !2
         29        CONCAT                                           ~15     ~14, '%28%3F%3A%5Cs%3F'
         30        CONCAT                                           ~16     ~15, !1
         31        CONCAT                                           ~17     ~16, '%29%29%29%28%3F%3A%5Cs%2B%7C%24%29'
         32        ASSIGN                                                   !3, ~17
    8    33      > FE_RESET_R                                       $19     !0, ->64
         34    > > FE_FETCH_R                                               $19, !4, ->64
    9    35    >   INIT_FCALL                                               'str_pad'
         36        SEND_VAR                                                 !4
         37        SEND_VAL                                                 15
         38        SEND_VAL                                                 '+'
         39        SEND_VAL                                                 1
         40        DO_ICALL                                         $20     
         41        CONCAT                                           ~21     $20, '+'
         42        INIT_FCALL                                               'preg_match'
         43        CONCAT                                           ~22     '%2F', !3
         44        CONCAT                                           ~23     ~22, '%2Fi'
         45        SEND_VAL                                                 ~23
         46        SEND_VAR                                                 !4
         47        SEND_REF                                                 !5
         48        DO_ICALL                                         $24     
         49      > JMPZ                                                     $24, ->52
         50    >   QM_ASSIGN                                        ~25     'matched%3A+'
         51      > JMP                                                      ->53
         52    >   QM_ASSIGN                                        ~25     'did+not+match.'
         53    >   CONCAT                                           ~26     ~21, ~25
         54        COUNT                                            ~27     !5
         55      > JMPZ                                                     ~27, ->59
         56    >   FETCH_DIM_R                                      ~28     !5, 0
         57        QM_ASSIGN                                        ~29     ~28
         58      > JMP                                                      ->60
         59    >   QM_ASSIGN                                        ~29     ''
         60    >   CONCAT                                           ~30     ~26, ~29
         61        CONCAT                                           ~31     ~30, '%0A'
         62        ECHO                                                     ~31
    8    63      > JMP                                                      ->34
         64    >   FE_FREE                                                  $19
   10    65      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
149.62 ms | 1400 KiB | 17 Q