3v4l.org

run code in 300+ PHP versions simultaneously
<?php const PATTERN = '~^ (%s):// # protocol (([\.\pL\pN-]+:)?([\.\pL\pN-]+)@)? # basic auth ( ([\pL\pN\pS\-\.])+(\.?([\pL\pN]|xn\-\-[\pL\pN-]+)+\.?) # a domain name | # or \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} # an IP address | # or \[ (?:(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){6})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:::(?:(?:(?:[0-9a-f]{1,4})):){5})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){4})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,1}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){3})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,2}(?:(?:[0-9a-f]{1,4})))?::(?:(?:(?:[0-9a-f]{1,4})):){2})(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,3}(?:(?:[0-9a-f]{1,4})))?::(?:(?:[0-9a-f]{1,4})):)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,4}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:(?:(?:(?:[0-9a-f]{1,4})):(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,5}(?:(?:[0-9a-f]{1,4})))?::)(?:(?:[0-9a-f]{1,4})))|(?:(?:(?:(?:(?:(?:[0-9a-f]{1,4})):){0,6}(?:(?:[0-9a-f]{1,4})))?::)))) \] # an IPv6 address ) (:[0-9]+)? # a port (optional) (?:/ (?:[\pL\pN\-._\~!$&\'()*+,;=:@]|%%[0-9A-Fa-f]{2})* )* # a path (?:\? (?:[\pL\pN\-._\~!$&\'()*+,;=:@/?]|%%[0-9A-Fa-f]{2})* )? # a query (optional) (?:\# (?:[\pL\pN\-._\~!$&\'()*+,;=:@/?]|%%[0-9A-Fa-f]{2})* )? # a fragment (optional) $~ixu'; const PROTOCOLS = ['http', 'https']; $pattern = sprintf(PATTERN, implode('|', PROTOCOLS)); $uri = '::1'; if (!preg_match($pattern, $uri)) { var_dump($uri); }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 20, Position 2 = 23
Branch analysis from position: 20
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 23
filename:       /in/i1peK
function name:  (null)
number of ops:  24
compiled vars:  !0 = $pattern, !1 = $uri
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   DECLARE_CONST                                            'PATTERN', '%7E%5E%0A++++++++++++%28%25s%29%3A%2F%2F+++++++++++++++++++++++++++++++++%23+protocol%0A++++++++++++%28%28%5B%5C.%5CpL%5CpN-%5D%2B%3A%29%3F%28%5B%5C.%5CpL%5CpN-%5D%2B%29%40%29%3F++++++%23+basic+auth%0A++++++++++++%28%0A++++++++++++++++%28%5B%5CpL%5CpN%5CpS%5C-%5C.%5D%29%2B%28%5C.%3F%28%5B%5CpL%5CpN%5D%7Cxn%5C-%5C-%5B%5CpL%5CpN-%5D%2B%29%2B%5C.%3F%29+%23+a+domain+name%0A++++++++++++++++++++%7C+++++++++++++++++++++++++++++++++++++++++++++++++%23+or%0A++++++++++++++++%5Cd%7B1%2C3%7D%5C.%5Cd%7B1%2C3%7D%5C.%5Cd%7B1%2C3%7D%5C.%5Cd%7B1%2C3%7D++++++++++++++++++++%23+an+IP+address%0A++++++++++++++++++++%7C+++++++++++++++++++++++++++++++++++++++++++++++++%23+or%0A++++++++++++++++%5C%5B%0A++++++++++++++++++++%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B6%7D%29%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%5C.%29%7B3%7D%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%29%29%29%29%29%7C%28%3F%3A%28%3F%3A%3A%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B5%7D%29%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%5C.%29%7B3%7D%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%29%29%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%3F%3A%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B4%7D%29%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%5C.%29%7B3%7D%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%29%29%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B0%2C1%7D%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%3F%3A%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B3%7D%29%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%5C.%29%7B3%7D%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%29%29%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B0%2C2%7D%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%3F%3A%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B2%7D%29%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%5C.%29%7B3%7D%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%29%29%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B0%2C3%7D%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%3F%3A%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%5C.%29%7B3%7D%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%29%29%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B0%2C4%7D%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%3F%3A%3A%29%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%5C.%29%7B3%7D%28%3F%3A%28%3F%3A25%5B0-5%5D%7C%28%3F%3A%5B1-9%5D%7C1%5B0-9%5D%7C2%5B0-4%5D%29%3F%5B0-9%5D%29%29%29%29%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B0%2C5%7D%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%3F%3A%3A%29%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%7C%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%3A%29%7B0%2C6%7D%28%3F%3A%28%3F%3A%5B0-9a-f%5D%7B1%2C4%7D%29%29%29%3F%3A%3A%29%29%29%29%0A++++++++++++++++%5C%5D++%23+an+IPv6+address%0A++++++++++++%29%0A++++++++++++%28%3A%5B0-9%5D%2B%29%3F++++++++++++++++++++++++++++++%23+a+port+%28optional%29%0A++++++++++++%28%3F%3A%2F+%28%3F%3A%5B%5CpL%5CpN%5C-._%5C%7E%21%24%26%27%28%29%2A%2B%2C%3B%3D%3A%40%5D%7C%25%25%5B0-9A-Fa-f%5D%7B2%7D%29%2A+%29%2A++++++%23+a+path%0A++++++++++++%28%3F%3A%5C%3F+%28%3F%3A%5B%5CpL%5CpN%5C-._%5C%7E%21%24%26%27%28%29%2A%2B%2C%3B%3D%3A%40%2F%3F%5D%7C%25%25%5B0-9A-Fa-f%5D%7B2%7D%29%2A+%29%3F+++%23+a+query+%28optional%29%0A++++++++++++%28%3F%3A%5C%23+%28%3F%3A%5B%5CpL%5CpN%5C-._%5C%7E%21%24%26%27%28%29%2A%2B%2C%3B%3D%3A%40%2F%3F%5D%7C%25%25%5B0-9A-Fa-f%5D%7B2%7D%29%2A+%29%3F+++%23+a+fragment+%28optional%29%0A++++++++%24%7Eixu'
   21     1        DECLARE_CONST                                            'PROTOCOLS', <array>
   24     2        INIT_FCALL                                               'sprintf'
          3        FETCH_CONSTANT                                   ~2      'PATTERN'
          4        SEND_VAL                                                 ~2
          5        INIT_FCALL                                               'implode'
          6        SEND_VAL                                                 '%7C'
          7        FETCH_CONSTANT                                   ~3      'PROTOCOLS'
          8        SEND_VAL                                                 ~3
          9        DO_ICALL                                         $4      
         10        SEND_VAR                                                 $4
         11        DO_ICALL                                         $5      
         12        ASSIGN                                                   !0, $5
   25    13        ASSIGN                                                   !1, '%3A%3A1'
   26    14        INIT_FCALL                                               'preg_match'
         15        SEND_VAR                                                 !0
         16        SEND_VAR                                                 !1
         17        DO_ICALL                                         $8      
         18        BOOL_NOT                                         ~9      $8
         19      > JMPZ                                                     ~9, ->23
   27    20    >   INIT_FCALL                                               'var_dump'
         21        SEND_VAR                                                 !1
         22        DO_ICALL                                                 
   28    23    > > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
178.14 ms | 1404 KiB | 21 Q