<?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