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&amp;hl=de_DE&amp;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&amp;hl=de_DE&amp;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)?)/|.*[?&amp;]v=)|youtu.be/)([^"&amp;?/ ]{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/' .&nbsp; getYoutubeId($youtubeUrl) . '?rel=0&amp;amp;wmode=transparent&amp;amp;hd=1" title="YouTube video player" width="250"</iframe>

Jetzt haben wir die vollständige Kontrolle über unsere eingebetteten Filme.