3v4l.org

run code in 300+ PHP versions simultaneously
<?php $youtubeId = []; foreach (urlProvider() as $data) { foreach (array_reverse(preg_split('/[\/?=#&]/', $data[0])) as $part) { if (trim(base64_encode(base64_decode($part, true)) , '=') == $part) { $youtubeId[$data[0]] = $part; break; } } } echo '<pre>'; print_r($youtubeId); echo '</pre>'; function urlProvider(): iterable { // without https://www yield 'youtube_link_1' => ['youtube.com/v/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_2' => ['youtube.com/v/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_3' => ['youtube.com/vi/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_4' => ['youtube.com/?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_5' => ['youtube.com/?vi=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_6' => ['youtube.com/watch?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_7' => ['youtube.com/watch?vi=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_8' => ['youtu.be/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_9' => ['youtube.com/embed/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_10' => ['youtube.com/shorts/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_11' => ['m.youtube.com/watch?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; // without https:// yield 'youtube_link_12' => ['www.youtube.com/v/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_13' => ['www.youtube.com/v/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_14' => ['www.youtube.com/vi/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_15' => ['www.youtube.com/?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_16' => ['www.youtube.com/?vi=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_17' => ['www.youtube.com/watch?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_18' => ['www.youtube.com/watch?vi=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_19' => ['www.youtu.be/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_20' => ['www.youtube.com/embed/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_21' => ['www.youtube.com/shorts/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; // http yield 'youtube_link_22' => ['http://youtube.com/v/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_23' => ['http://youtube.com/v/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_24' => ['http://youtube.com/vi/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_25' => ['http://www.youtube.com/?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_26' => ['http://www.youtube.com/?vi=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_27' => ['http://www.youtube.com/watch?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_28' => ['http://www.youtube.com/watch?vi=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_29' => ['http://www.youtu.be/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_30' => ['http://youtube.com/embed/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_31' => ['http://www.youtube.com/shorts/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_32' => ['http://m.youtube.com/watch?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; // https yield 'youtube_link_33' => ['https://youtube.com/v/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_34' => ['https://youtube.com/v/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_35' => ['https://youtube.com/vi/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_36' => ['https://www.youtube.com/?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_37' => ['https://www.youtube.com/?vi=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_38' => ['https://www.youtube.com/watch?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_39' => ['https://www.youtube.com/watch?vi=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_40' => ['https://www.youtu.be/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_41' => ['https://youtube.com/embed/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_42' => ['https://www.youtube.com/shorts/dE5jPNvLvOk', 'dE5jPNvLvOk', null]; yield 'youtube_link_43' => ['https://m.youtube.com/watch?v=dE5jPNvLvOk', 'dE5jPNvLvOk', null]; // with start time yield 'youtube_link_44' => ['https://youtube.com/v/dE5jPNvLvOk?t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_45' => ['https://youtube.com/v/dE5jPNvLvOk?t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_46' => ['https://youtube.com/vi/dE5jPNvLvOk?t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_47' => ['https://www.youtube.com/?v=dE5jPNvLvOk&t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_48' => ['https://www.youtube.com/?vi=dE5jPNvLvOk&t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_49' => ['https://www.youtube.com/watch?v=dE5jPNvLvOk&t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_50' => ['https://www.youtube.com/watch?vi=dE5jPNvLvOk&t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_51' => ['https://www.youtu.be/dE5jPNvLvOk?t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_52' => ['https://youtube.com/embed/dE5jPNvLvOk?t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_53' => ['https://www.youtube.com/shorts/dE5jPNvLvOk?t=30', 'dE5jPNvLvOk', 30]; yield 'youtube_link_54' => ['https://m.youtube.com/watch?v=dE5jPNvLvOk&t=30', 'dE5jPNvLvOk', 30]; // with feature yield 'youtube_link_55' => ['https://www.youtube.com/watch?dev=inprogress&v=dE5jPNvLvOk&feature=related', 'dE5jPNvLvOk', null]; yield 'youtube_link_56' => ['https://youtube.com/v/dE5jPNvLvOk?feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_57' => ['https://youtube.com/v/dE5jPNvLvOk?feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_58' => ['https://youtube.com/vi/dE5jPNvLvOk?feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_59' => ['https://www.youtube.com/?v=dE5jPNvLvOk&feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_60' => ['https://www.youtube.com/?vi=dE5jPNvLvOk&feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_61' => ['https://www.youtube.com/watch?v=dE5jPNvLvOk&feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_62' => ['https://www.youtube.com/watch?vi=dE5jPNvLvOk&feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_63' => ['https://www.youtu.be/dE5jPNvLvOk?feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_64' => ['https://youtube.com/embed/dE5jPNvLvOk?feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_65' => ['https://www.youtube.com/shorts/dE5jPNvLvOk?feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; yield 'youtube_link_66' => ['https://m.youtube.com/watch?v=dE5jPNvLvOk&feature=youtube_gdata_player', 'dE5jPNvLvOk', null]; // do not implemented yet - with #action=share yield 'youtube_link_67' => ['https://youtube.com/v/dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_68' => ['https://youtube.com/v/dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_69' => ['https://youtube.com/vi/dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_70' => ['https://www.youtube.com/?v=dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_71' => ['https://www.youtube.com/?vi=dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_72' => ['https://www.youtube.com/watch?v=dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_73' => ['https://www.youtube.com/watch?vi=dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_74' => ['https://www.youtu.be/dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_75' => ['https://youtube.com/embed/dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_76' => ['https://www.youtube.com/shorts/dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; yield 'youtube_link_77' => ['https://m.youtube.com/watch?v=dE5jPNvLvOk#action=share ', 'dE5jPNvLvOk', null]; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 4, Position 2 = 35
Branch analysis from position: 4
2 jumps found. (Code = 78) Position 1 = 5, Position 2 = 35
Branch analysis from position: 5
2 jumps found. (Code = 77) Position 1 = 14, Position 2 = 33
Branch analysis from position: 14
2 jumps found. (Code = 78) Position 1 = 15, Position 2 = 33
Branch analysis from position: 15
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 32
Branch analysis from position: 28
1 jumps found. (Code = 42) Position 1 = 33
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 4
Branch analysis from position: 4
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 14
Branch analysis from position: 14
Branch analysis from position: 33
Branch analysis from position: 33
Branch analysis from position: 35
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 35
filename:       /in/KKuRl
function name:  (null)
number of ops:  42
compiled vars:  !0 = $youtubeId, !1 = $data, !2 = $part
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
    4     1        INIT_FCALL_BY_NAME                                       'urlProvider'
          2        DO_FCALL                                      0  $4      
          3      > FE_RESET_R                                       $5      $4, ->35
          4    > > FE_FETCH_R                                               $5, !1, ->35
    5     5    >   INIT_FCALL                                               'array_reverse'
          6        INIT_FCALL                                               'preg_split'
          7        SEND_VAL                                                 '%2F%5B%5C%2F%3F%3D%23%26%5D%2F'
          8        FETCH_DIM_R                                      ~6      !1, 0
          9        SEND_VAL                                                 ~6
         10        DO_ICALL                                         $7      
         11        SEND_VAR                                                 $7
         12        DO_ICALL                                         $8      
         13      > FE_RESET_R                                       $9      $8, ->33
         14    > > FE_FETCH_R                                               $9, !2, ->33
    6    15    >   INIT_FCALL                                               'trim'
         16        INIT_FCALL                                               'base64_encode'
         17        INIT_FCALL                                               'base64_decode'
         18        SEND_VAR                                                 !2
         19        SEND_VAL                                                 <true>
         20        DO_ICALL                                         $10     
         21        SEND_VAR                                                 $10
         22        DO_ICALL                                         $11     
         23        SEND_VAR                                                 $11
         24        SEND_VAL                                                 '%3D'
         25        DO_ICALL                                         $12     
         26        IS_EQUAL                                                 !2, $12
         27      > JMPZ                                                     ~13, ->32
    7    28    >   FETCH_DIM_R                                      ~14     !1, 0
         29        ASSIGN_DIM                                               !0, ~14
         30        OP_DATA                                                  !2
    8    31      > JMP                                                      ->33
    5    32    > > JMP                                                      ->14
         33    >   FE_FREE                                                  $9
    4    34      > JMP                                                      ->4
         35    >   FE_FREE                                                  $5
   12    36        ECHO                                                     '%3Cpre%3E'
   13    37        INIT_FCALL                                               'print_r'
         38        SEND_VAR                                                 !0
         39        DO_ICALL                                                 
   14    40        ECHO                                                     '%3C%2Fpre%3E'
  138    41      > RETURN                                                   1

Function urlprovider:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 161) Position 1 = -2
filename:       /in/KKuRl
function name:  urlProvider
number of ops:  79
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   17     0  E >   GENERATOR_CREATE                                         
   20     1        YIELD                                                    <array>, 'youtube_link_1'
   22     2        YIELD                                                    <array>, 'youtube_link_2'
   23     3        YIELD                                                    <array>, 'youtube_link_3'
   25     4        YIELD                                                    <array>, 'youtube_link_4'
   26     5        YIELD                                                    <array>, 'youtube_link_5'
   28     6        YIELD                                                    <array>, 'youtube_link_6'
   29     7        YIELD                                                    <array>, 'youtube_link_7'
   31     8        YIELD                                                    <array>, 'youtube_link_8'
   32     9        YIELD                                                    <array>, 'youtube_link_9'
   33    10        YIELD                                                    <array>, 'youtube_link_10'
   34    11        YIELD                                                    <array>, 'youtube_link_11'
   37    12        YIELD                                                    <array>, 'youtube_link_12'
   39    13        YIELD                                                    <array>, 'youtube_link_13'
   40    14        YIELD                                                    <array>, 'youtube_link_14'
   42    15        YIELD                                                    <array>, 'youtube_link_15'
   43    16        YIELD                                                    <array>, 'youtube_link_16'
   45    17        YIELD                                                    <array>, 'youtube_link_17'
   46    18        YIELD                                                    <array>, 'youtube_link_18'
   48    19        YIELD                                                    <array>, 'youtube_link_19'
   49    20        YIELD                                                    <array>, 'youtube_link_20'
   50    21        YIELD                                                    <array>, 'youtube_link_21'
   53    22        YIELD                                                    <array>, 'youtube_link_22'
   55    23        YIELD                                                    <array>, 'youtube_link_23'
   56    24        YIELD                                                    <array>, 'youtube_link_24'
   58    25        YIELD                                                    <array>, 'youtube_link_25'
   59    26        YIELD                                                    <array>, 'youtube_link_26'
   61    27        YIELD                                                    <array>, 'youtube_link_27'
   62    28        YIELD                                                    <array>, 'youtube_link_28'
   64    29        YIELD                                                    <array>, 'youtube_link_29'
   65    30        YIELD                                                    <array>, 'youtube_link_30'
   66    31        YIELD                                                    <array>, 'youtube_link_31'
   67    32        YIELD                                                    <array>, 'youtube_link_32'
   70    33        YIELD                                                    <array>, 'youtube_link_33'
   72    34        YIELD                                                    <array>, 'youtube_link_34'
   73    35        YIELD                                                    <array>, 'youtube_link_35'
   75    36        YIELD                                                    <array>, 'youtube_link_36'
   76    37        YIELD                                                    <array>, 'youtube_link_37'
   78    38        YIELD                                                    <array>, 'youtube_link_38'
   79    39        YIELD                                                    <array>, 'youtube_link_39'
   81    40        YIELD                                                    <array>, 'youtube_link_40'
   82    41        YIELD                                                    <array>, 'youtube_link_41'
   83    42        YIELD                                                    <array>, 'youtube_link_42'
   84    43        YIELD                                                    <array>, 'youtube_link_43'
   87    44        YIELD                                                    <array>, 'youtube_link_44'
   89    45        YIELD                                                    <array>, 'youtube_link_45'
   90    46        YIELD                                                    <array>, 'youtube_link_46'
   92    47        YIELD                                                    <array>, 'youtube_link_47'
   93    48        YIELD                                                    <array>, 'youtube_link_48'
   95    49        YIELD                                                    <array>, 'youtube_link_49'
   96    50        YIELD                                                    <array>, 'youtube_link_50'
   98    51        YIELD                                                    <array>, 'youtube_link_51'
   99    52        YIELD                                                    <array>, 'youtube_link_52'
  100    53        YIELD                                                    <array>, 'youtube_link_53'
  101    54        YIELD                                                    <array>, 'youtube_link_54'
  104    55        YIELD                                                    <array>, 'youtube_link_55'
  106    56        YIELD                                                    <array>, 'youtube_link_56'
  108    57        YIELD                                                    <array>, 'youtube_link_57'
  109    58        YIELD                                                    <array>, 'youtube_link_58'
  111    59        YIELD                                                    <array>, 'youtube_link_59'
  112    60        YIELD                                                    <array>, 'youtube_link_60'
  114    61        YIELD                                                    <array>, 'youtube_link_61'
  115    62        YIELD                                                    <array>, 'youtube_link_62'
  117    63        YIELD                                                    <array>, 'youtube_link_63'
  118    64        YIELD                                                    <array>, 'youtube_link_64'
  119    65        YIELD                                                    <array>, 'youtube_link_65'
  120    66        YIELD                                                    <array>, 'youtube_link_66'
  123    67        YIELD                                                    <array>, 'youtube_link_67'
  125    68        YIELD                                                    <array>, 'youtube_link_68'
  126    69        YIELD                                                    <array>, 'youtube_link_69'
  128    70        YIELD                                                    <array>, 'youtube_link_70'
  129    71        YIELD                                                    <array>, 'youtube_link_71'
  131    72        YIELD                                                    <array>, 'youtube_link_72'
  132    73        YIELD                                                    <array>, 'youtube_link_73'
  134    74        YIELD                                                    <array>, 'youtube_link_74'
  135    75        YIELD                                                    <array>, 'youtube_link_75'
  136    76        YIELD                                                    <array>, 'youtube_link_76'
  137    77        YIELD                                                    <array>, 'youtube_link_77'
  138    78      > GENERATOR_RETURN                                         

End of function urlprovider

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
141.48 ms | 1016 KiB | 19 Q