Joomla - Simple RSS Reader to get Youtube Video ID
-
04-07-2021 - |
Question
I am trying to modify Simple RSS Reader to get the Youtube Video ID of an item within the RSS to determine the thumbnail, I am seemingly on the right track but not so great with PHP - This is from helper.php and once complete could be used by many others to modify their own Simple RSS Reader Mod for Joomla....
I am wondering how to make this function "getYTid" to place the Id inside the URL Veriable at the end - the code is off in two places, @ the function, and declaring the variable at the end not only how do I do it, but if possible please direct me to a place where I can better understand the syntax of declaring variables with mixed text as well if possible I seem to run into this problem a lot
function getYTid('$feed->itemLink') {
$ytvIDlen = 11; // This is the length of YouTube's video IDs
// The ID string starts after "v=", which is usually right after
// "youtube.com/watch?" in the URL
$idStarts = strpos($ytURL, "?v=");
// In case the "v=" is NOT right after the "?" (not likely, but I like to keep my
// bases covered), it will be after an "&":
if($idStarts === FALSE)
$idStarts = strpos($ytURL, "&v=");
// If still FALSE, URL doesn't have a vid ID
if($idStarts === FALSE)
die("YouTube video ID not found. Please double-check your URL.");
// Offset the start location to match the beginning of the ID string
$idStarts +=3;
// Get the ID string and return it
$ytvID = substr($ytURL, $idStarts, $ytvIDlen);
return $ytvID;
}
$feedItem->feedImageSrc = 'http://i3.ytimg.com/vi/'$ytvID'/default.jpg';
Solution
Here is an working example you can easily adjust it to work for you:
function get_yt_id($yturl, $idlen) {
$idchk_que = strpos($yturl, "?v=");
$idchk_amp = strpos($yturl, "&v=");
if ($idchk_que > -1 || $idchk_amp > -1) {
if ($idchk_que > -1) {
$yturl_exploded = explode("?v=", $yturl);
}
else if ($idchk_amp > -1) {
$yturl_exploded = explode("&v=", $yturl);
}
$yturl_exp = $yturl_exploded[1];
$ytid = substr($yturl_exp, 0, $idlen);
return $ytid;
}
else {
return "ID NOT FOUND";
}
}
$id_from_yturl = get_yt_id("http://www.youtube.com/watch?v=YvbQ9G0yXeU&t=14m36s", "11");
print $id_from_yturl;
- I did a little edit so that this function is more bullet proof...
OTHER TIPS
You should use regular expressions to parse the YouTube IDs from the URL strings. preg_match parsing in PHP
And to concatenate strings in PHP, you use periods:
$feedItem->feedImageSrc = 'http://i3.ytimg.com/vi/' . $ytvID . '/default.jpg';