youTube-Link umwandeln

String

Erfahrenes Mitglied
Huhu zusammen,

hat es jemand von euch eigentlich schonmal geschafft, einen youTube-Video-Link automatisch in ein "Video" zu verwandeln?
Also jetzt bei einem Forumsbeitrag. Schreibt der User den Link, würde ich dieses gerne gleich einbinden und anzeigen lassen.

Allerdings scheitere ich an den ganzen möglichkeiten eines YouTube-Links. Kurzer Link, langer Link, mit HD, ohne HD, mit Startzeit, ohne Startzeit.. Soviele str_replace funktionieren einfach bei mir irgendwie nicht.. und in regulären Ausdrücken bin ich leider nicht der fitteste :(

Hat da einer von euch schon was nettest gebastelt bekommen? :)

Gruß
paD
 
Google mal nach "YouTube BB Code".

Es gibt welche da muss man vorher einen YouTube-Button anklicken, aber es gibt auch welche die erkennen sofort das es ein YouTube Video ist.
 
Ich muss gestehen.. ich finde leider keinen "BB-Code" der mit den geschilderten Dingen klar kommt.
Die meisten können nur die alten youTube URLs.. Geschweige von HD-URLs oder mit einer Startzeit. Kommt beides zum Einsatz versagen alle gefundenen leider gänzlich.. :(
 
Relevant ist ja nur folgender Teil:
Code:
http://www.youtube.com/watch?v=O87Vsr_1afI

Wenn danach noch mehr kommt, ist das doch eigentlich egal, beim Einbetten des Videos?
Suchen musst du also nur den genannten Teil, verwandeln aber eben den gesamten String bis zum nächsten Leerzeichen.

Wenn ich mich irre, sorry. Aber z.B. einen HD-Link kenne ich gar nicht?
Folgendes kenne ich z.B., aber die ganzen Einstellungen zeigts in meiner URL jedenfalls nicht an: http://www.youtube.com/watch?v=O87Vsr_1afI&feature=player_detailpage

gruß
 
Genau das ist das Problem..
Der Link könnte leider auch so aussehen:

http://youtu.be/94F3Dl1B1nM
http://www.youtube.com/watch?v=94F3Dl1B1nM

Die Sind genau gleich..dann noch mit HD
http://youtu.be/94F3Dl1B1nM?hd=1
http://www.youtube.com/watch?v=94F3Dl1B1nM&hd=1

Mit Startzeit & HD
http://youtu.be/94F3Dl1B1nM?hd=1&t=10s

Natürlich auch im alten, langen Format:
http://www.youtube.com/watch?v=94F3Dl1B1nM&hd=1&t=10s

Sieht man, wenn man bei youTube auf "teilen" klickt und dann auf "Optionen".. :(

paD
 
Naja, wie gesagt. Alles irrelevant, weil für den Aufruf des Videos nur der Teil inkl. der Video-ID wichtig ist. Du zeigst das Video eh in einem kleinen Plugin-Browser (oder?). Da brauchst' eh kein HD. ;)

Also würde ich alles bis zum ersten &-Zeichen verwerten.
 
Hier, das funktioniert für deine Linkvarianten:

PHP:
<?php

$urls = array(	'http://youtu.be/94F3Dl1B1nM',
				'http://www.youtube.com/watch?v=94F3Dl1B1nM',
				'http://youtu.be/94F3Dl1B1nM?hd=1',
				'http://www.youtube.com/watch?v=94F3Dl1B1nM&hd=1',
				'http://youtu.be/94F3Dl1B1nM?hd=1&t=10s',
				'http://www.youtube.com/watch?v=94F3Dl1B1nM&hd=1&t=10s'
			);

function getYoutubeId( $url ) {
			
	$parsedUrl = parse_url($url);
	
	if( isset($parsedUrl['query']) && (strpos($parsedUrl['query'], 'v=') !== false) ) {
				
		$id = substr($parsedUrl['query'], strpos($parsedUrl['query'], 'v=')+2, 11);
		
	} else {
	
		if( strlen($parsedUrl['path']) == 12 ) {
		
			$id = substr($parsedUrl['path'], 1);
			
		} else {
		
			return "Invalid URL!";
			
		}
		
	}
	
	return $id;
	
}

foreach( $urls as $url) {

	var_dump(getYoutubeId( $url ));
	
}
 
Zurück