@@ -323,16 +323,25 @@ public function getActivitiesByChannelId($channelId)
323
323
*/
324
324
public static function parseVIdFromURL ($ youtube_url )
325
325
{
326
+ $ videoId = null ;
326
327
if (strpos ($ youtube_url , 'youtube.com ' )) {
327
- $ params = static ::_parse_url_query ($ youtube_url );
328
- return $ params ['v ' ];
328
+ if (strpos ($ youtube_url , 'embed ' )) {
329
+ $ path = static ::_parse_url_path ($ youtube_url );
330
+ $ videoId = substr ($ path , 7 );
331
+ }
332
+ if ($ params = static ::_parse_url_query ($ youtube_url )) {
333
+ $ videoId = isset ($ params ['v ' ]) ? $ params ['v ' ] : null ;
334
+ }
329
335
} else if (strpos ($ youtube_url , 'youtu.be ' )) {
330
336
$ path = static ::_parse_url_path ($ youtube_url );
331
- $ vid = substr ($ path , 1 );
332
- return $ vid ;
333
- } else {
337
+ $ videoId = substr ($ path , 1 );
338
+ }
339
+
340
+ if (empty ($ videoId )) {
334
341
throw new \Exception ('The supplied URL does not look like a Youtube URL ' );
335
342
}
343
+
344
+ return $ videoId ;
336
345
}
337
346
338
347
/**
@@ -485,8 +494,7 @@ public function api_get($url, $params)
485
494
*/
486
495
public static function _parse_url_path ($ url )
487
496
{
488
- $ array = parse_url ($ url );
489
- return $ array ['path ' ];
497
+ return parse_url ($ url , PHP_URL_PATH );
490
498
}
491
499
492
500
/**
@@ -497,16 +505,16 @@ public static function _parse_url_path($url)
497
505
*/
498
506
public static function _parse_url_query ($ url )
499
507
{
500
- $ array = parse_url ($ url );
501
- $ query = $ array ['query ' ];
502
-
503
- $ queryParts = explode ('& ' , $ query );
508
+ $ queryString = parse_url ($ url , PHP_URL_QUERY );
504
509
505
510
$ params = array ();
506
- foreach ($ queryParts as $ param ) {
507
- $ item = explode ('= ' , $ param );
508
- $ params [$ item [0 ]] = empty ($ item [1 ]) ? '' : $ item [1 ];
511
+
512
+ parse_str ($ queryString , $ params );
513
+
514
+ if (is_null ($ params )) {
515
+ return array ();
509
516
}
510
- return $ params ;
517
+
518
+ return array_filter ($ params );
511
519
}
512
520
}
0 commit comments