Wenn Sie Benutzern erlauben möchten, Youtube-Videos in ein CMS einzubetten, können Sie Ihnen nicht erlauben, den vollständigen Youtube-Einbettungs- oder Iframe-Code einzuschließen.
Aufgrund der Sicherheitsanfälligkeit beim Injizieren eines unerwünschten Codes können Benutzer im schlimmsten Fall Ihre Website zerstören.
Wir können dieses Problem lösen, indem wir die Youtube-URL, den Youtube-Einbettungs- oder Iframe-Code oder nur die Youtube-ID verwenden und sie in einen Iframe mit unseren spezifischen Abmessungen einbinden.
Hier ist eine PHP-Funktion, die die Youtube-ID aus allen Arten von Benutzereingaben extrahiert.
Mögliche Benutzereingaben
Bei diesen Benutzereingaben müssen wir rechnen:
- nKhheto4L6k
- http://youtu.be/nKhheto4L6k
- http://www.youtube.com/watch?v=nKhheto4L6k&feature=fvsr
- http://www.youtube.com/user/Google?blend=2&ob=5#p/a/u/2/QP5szEn2dxs (Kanal-Code)
- http://www.youtube.com/user/Google?#p/a/u/2/QP5szEn2dxs (Anderer Kanal-Code)
- <iframe width=“560″ height=“349″ src=“http://www.youtube.com/embed/QP5szEn2dxs?rel=0″ frameborder=“0″ allowfullscreen></iframe> (neuer Einbettungscode)
- <object width=“560″ height=“349″><param value=“http://www.youtube.com/v/QP5szEn2dxs?version=3&hl=de_DE&rel=0″></param><param name=“allowFullScreen“ value=“true“></param><param name=“allowscriptaccess“ value=“always“></param><embed src=“http://www.youtube.com/v/QP5szEn2dxs?version=3&hl=de_DE&rel=0″ type=“application/x-shockwave-flash“ width=“560″ height=“349″ allowscriptaccess=“always“ allowfullscreen=“true“></embed></object> (old embed code)
Ich denke, das sind alle Möglichkeiten, wie Sie eine Ressource von YouTube erhalten können.
/*
* Function to parse the id from all different types of Youtube Embed Codes and Youtube Urls
*
* @author Andreas Grundner
* @date 22.07.2011
* @licence freeware
* @param string youtube url, embed code, share code, channel code ...
* @return string youtube_id
*/
function getYoutubeId($sYoutubeUrl) {
# set to zero
$youtube_id = "";
$sYoutubeUrl = trim($sYoutubeUrl);
# the User entered only the eleven chars long id, Case 1
if(strlen($sYoutubeUrl) === 11) {
$youtube_id = $sYoutubeUrl;
return $sYoutubeUrl;
}
# the User entered a Url
else {
# try to get all Cases
if (preg_match('~(?:youtube.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu.be/)([^"&?/ ]{11})~i', $sYoutubeUrl, $match)) {
$youtube_id = $match[1];
return $youtube_id;
}
# try to get some other channel codes, and fallback extractor
elseif(preg_match('~http://www.youtube.com/v/([A-Za-z0-9-_]+).+?|embed/([0-9A-Za-z-_]{11})|watch?v=([0-9A-Za-z-_]{11})|#.*/([0-9A-Za-z-_]{11})~si', $sYoutubeUrl, $match)) {
for ($i=1; $i<=4; $i++) {
if (strlen($match[$i])==11) {
$youtube_id = $match[$i];
break;
}
}
return $youtube_id;
}
else {
$youtube_id = "No valid YoutubeId extracted";
return $youtube_id;
}
}
}
Als letztes müssen Sie die Youtube-ID abrufen (diese Funktion gibt sie zurück) und sie in einen Iframe oder einen Einbettungscode einschließen.
<iframe allowfullscreen="" frameborder="0" height="187" src="http://www.youtube.com/embed/' . getYoutubeId($youtubeUrl) . '?rel=0&wmode=transparent&hd=1" title="YouTube video player" width="250"</iframe>
Jetzt haben wir die vollständige Kontrolle über unsere eingebetteten Filme.
It’s the best time to make some plans for the future and it is time to be happy. I’ve read this post and if I could I desire to suggest you few interesting things or advice. Perhaps you can write next articles referring to this article. I desire to read even more things about it!
Can you provide a download link for your example(http://www.killoverhead.com/getYoutubeId.php)?
Just copy the file from above!
Great! Thanks for the function!
Thank you for this code nice job!!
You’re welcome!