3v4l.org

run code in 300+ PHP versions simultaneously
<?php // https://www.ppaonline.com.au/wp-content/uploads/2019/05/DVA-number-format-factsheet.pdf // https://meteor.aihw.gov.au/content/339127 $DVAs = [ 'VBUG1234', // veteran 'QMO54321A', // dependent 'NOMG111', // veteran 'WX1111', // veteran 'NOPE666A', // invalid 'SCON3111Z', // dependent ]; // file number is 1-3 letters or a space for WW1 (war code) followed by upto 6 digits // file number has a max length of 7 $regex = <<<REGEX / ^ ([NVQWST]) (?| ([ ANPVX])(\d{1,6}) |( BG |CN |ET |F[RW] |G[RW] |I[QTV] |JA |K[MO] |MO |N[FGKX] |P[KOX] |R[DMU] |S[AELMORS] |U[BS] |YU )(\d{1,5}) |( (?:A(?:FG|GX|LX|R[GX]) |B(?:A[GL]|CG|G[GKX]|RX|U[GRX]) |C(?:AM|CG|HX|IX|LK|N[KSX]|ON|YP|Z[GX]) |D(?:EG|N[KX]) |E(?:G[GXY]|SX|T[KX]) |F(?:I[JX]|R[GKX]) |G(?:HA|R[EGKX]) |H(?:K[SX]|L[GKX]|UX) |I(?:DA|ND|SR|T[GKX]) |K(?:OS|SH|UG|YA) |L(?:AX|BX|XK) |M(?:A[LRU]|LS|OG|TX|WI) |N(?:BA|CG|GR|IG|RD|S[MSW]|W[GKX]) |OMG |P(?:A[DGLMX]|C[AGRV]|H[KSX]|L[GX]|MS|S[MW]|WO) |QAG |R(?:DX|U[GX]) |S(?:A[GX]|CG|EG|IN|PG|UD|W[KP]|Y[GRX]) |T(?:H[KS]|R[GK]|ZA) |U(?:AG|RX|S[GKSX]) |V(?:EX|NS) |Y(?:EM|GX) |ZIM ) )(\d{1,4}) ) ([A-Z]?) $ /x REGEX; foreach ($DVAs as $DVA) { var_export([ $DVA, (bool) preg_match($regex, $DVA, $m), $m, $m ? sprintf( '%s%s%0' . (7 - strlen($m[2])) . 's%s', $m[1], $m[2], $m[3], $m[4] ) : '' ]); echo "\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 3, Position 2 = 39
Branch analysis from position: 3
2 jumps found. (Code = 78) Position 1 = 4, Position 2 = 39
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 15, Position 2 = 33
Branch analysis from position: 15
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 39
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 39
filename:       /in/mLpcZ
function name:  (null)
number of ops:  41
compiled vars:  !0 = $DVAs, !1 = $regex, !2 = $DVA, !3 = $m
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    6     0  E >   ASSIGN                                                   !0, <array>
   18     1        ASSIGN                                                   !1, '%2F%0A%5E%0A%28%5BNVQWST%5D%29%0A%28%3F%7C%0A++%28%5B+ANPVX%5D%29%28%5Cd%7B1%2C6%7D%29%0A%0A++%7C%28%0A+++++BG%0A++++%7CCN%0A++++%7CET%0A++++%7CF%5BRW%5D%0A++++%7CG%5BRW%5D%0A++++%7CI%5BQTV%5D%0A++++%7CJA%0A++++%7CK%5BMO%5D%0A++++%7CMO%0A++++%7CN%5BFGKX%5D%0A++++%7CP%5BKOX%5D%0A++++%7CR%5BDMU%5D%0A++++%7CS%5BAELMORS%5D%0A++++%7CU%5BBS%5D%0A++++%7CYU%0A++%29%28%5Cd%7B1%2C5%7D%29%0A%0A++%7C%28%0A++++%28%3F%3AA%28%3F%3AFG%7CGX%7CLX%7CR%5BGX%5D%29%0A++++++%7CB%28%3F%3AA%5BGL%5D%7CCG%7CG%5BGKX%5D%7CRX%7CU%5BGRX%5D%29%0A++++++%7CC%28%3F%3AAM%7CCG%7CHX%7CIX%7CLK%7CN%5BKSX%5D%7CON%7CYP%7CZ%5BGX%5D%29%0A++++++%7CD%28%3F%3AEG%7CN%5BKX%5D%29%0A++++++%7CE%28%3F%3AG%5BGXY%5D%7CSX%7CT%5BKX%5D%29%0A++++++%7CF%28%3F%3AI%5BJX%5D%7CR%5BGKX%5D%29%0A++++++%7CG%28%3F%3AHA%7CR%5BEGKX%5D%29%0A++++++%7CH%28%3F%3AK%5BSX%5D%7CL%5BGKX%5D%7CUX%29%0A++++++%7CI%28%3F%3ADA%7CND%7CSR%7CT%5BGKX%5D%29%0A++++++%7CK%28%3F%3AOS%7CSH%7CUG%7CYA%29%0A++++++%7CL%28%3F%3AAX%7CBX%7CXK%29%0A++++++%7CM%28%3F%3AA%5BLRU%5D%7CLS%7COG%7CTX%7CWI%29%0A++++++%7CN%28%3F%3ABA%7CCG%7CGR%7CIG%7CRD%7CS%5BMSW%5D%7CW%5BGKX%5D%29%0A++++++%7COMG%0A++++++%7CP%28%3F%3AA%5BDGLMX%5D%7CC%5BAGRV%5D%7CH%5BKSX%5D%7CL%5BGX%5D%7CMS%7CS%5BMW%5D%7CWO%29%0A++++++%7CQAG%0A++++++%7CR%28%3F%3ADX%7CU%5BGX%5D%29%0A++++++%7CS%28%3F%3AA%5BGX%5D%7CCG%7CEG%7CIN%7CPG%7CUD%7CW%5BKP%5D%7CY%5BGRX%5D%29%0A++++++%7CT%28%3F%3AH%5BKS%5D%7CR%5BGK%5D%7CZA%29%0A++++++%7CU%28%3F%3AAG%7CRX%7CS%5BGKSX%5D%29%0A++++++%7CV%28%3F%3AEX%7CNS%29%0A++++++%7CY%28%3F%3AEM%7CGX%29%0A++++++%7CZIM%0A++++%29%0A++%29%28%5Cd%7B1%2C4%7D%29%0A%29%0A%28%5BA-Z%5D%3F%29%0A%24%0A%2Fx'
   75     2      > FE_RESET_R                                       $6      !0, ->39
          3    > > FE_FETCH_R                                               $6, !2, ->39
   76     4    >   INIT_FCALL                                               'var_export'
   77     5        INIT_ARRAY                                       ~7      !2
   78     6        INIT_FCALL                                               'preg_match'
          7        SEND_VAR                                                 !1
          8        SEND_VAR                                                 !2
          9        SEND_REF                                                 !3
         10        DO_ICALL                                         $8      
         11        BOOL                                             ~9      $8
         12        ADD_ARRAY_ELEMENT                                ~7      ~9
   79    13        ADD_ARRAY_ELEMENT                                ~7      !3
   80    14      > JMPZ                                                     !3, ->33
         15    >   INIT_FCALL                                               'sprintf'
   81    16        FETCH_DIM_R                                      ~10     !3, 2
         17        STRLEN                                           ~11     ~10
         18        SUB                                              ~12     7, ~11
         19        CONCAT                                           ~13     '%25s%25s%250', ~12
         20        CONCAT                                           ~14     ~13, 's%25s'
         21        SEND_VAL                                                 ~14
   82    22        FETCH_DIM_R                                      ~15     !3, 1
         23        SEND_VAL                                                 ~15
   83    24        FETCH_DIM_R                                      ~16     !3, 2
         25        SEND_VAL                                                 ~16
   84    26        FETCH_DIM_R                                      ~17     !3, 3
         27        SEND_VAL                                                 ~17
   85    28        FETCH_DIM_R                                      ~18     !3, 4
         29        SEND_VAL                                                 ~18
   80    30        DO_ICALL                                         $19     
   85    31        QM_ASSIGN                                        ~20     $19
         32      > JMP                                                      ->34
   87    33    >   QM_ASSIGN                                        ~20     ''
         34    >   ADD_ARRAY_ELEMENT                                ~7      ~20
         35        SEND_VAL                                                 ~7
   76    36        DO_ICALL                                                 
   89    37        ECHO                                                     '%0A'
   75    38      > JMP                                                      ->3
         39    >   FE_FREE                                                  $6
   90    40      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
203.09 ms | 1005 KiB | 16 Q