Jag skrev en funktion som man kunde skicka in en url till en youtube video i och få ut embed-koden för videon. Det fungerar bra men det blev en hel del kod och jag tänkte att det måste gå att göra på typ en rad med reguljära uttryck. Tyvärr är jag väldigt dålig på regexp och jag får det inte riktigt att fungera.
En url ser ut så här:
http://www.youtube.com/watch?v=4EszplXQzeA
men kan även ha fler querystring:
http://www.youtube.com/watch?v=4EszplXQzeA&search=citro
Embed koden ser ut så här:
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/4EszplXQzeA"></param><embed src="http://www.youtube.com/v/4EszplXQzeA" type="application/x-shockwave-flash" width="425" height="350"></embed></object>
Mitt försök till funktion ser ut så här:
function get_embedded_content($url){
$embed = preg_replace('#[url]http://(www\.)?youtube.com/watch\?v=([/url][A-Za-z0-9]+)(.+?)#i','<object width="425" height="350"><param name="movie" value="$2"></param><embed src="http://www.youtube.com/v/$2" type="application/x-shockwave-flash" width="425" height="350"></embed></object>',$url);
return $embed;
}
Det fungerar ganska bra men om man har fler querystrings så får man dem kvar på slutet, jag vill att de ska försvinna, det är därför jag försökt med (.+?) i slutet men det gör ingen verkan.
Jag skulle även vilja att om man skickar in en helt annan url så får man bara en tom sträng tillbaka.
Någon som vet hur jag kan lösa detta?