youtube url aanpassen met preg_replace
http://www.youtube.com/v/-LzGJozwZDY of http://www.youtube.com/watch?v=ks0P1u6-OUY&feature=channel)
de video code (vb: -LzGJozwZDY of ks0P1u6-OUY) te halen (denk zelf dat via preg_replace het makkelijkst is)
alvast bedankt!
groetjes stefan
ik vroeg me af of iemand mij kan helpen om uit een youtube url (vb: de video code (vb: -LzGJozwZDY of ks0P1u6-OUY) te halen (denk zelf dat via preg_replace het makkelijkst is)
alvast bedankt!
groetjes stefan
parse_url ;-)
Nee, kijk even naar jaja .... heb je mss een klein voorbeeldje voor me?
Stefan Renne op 01/09/2010 18:48:48:
jaja .... heb je mss een klein voorbeeldje voor me?
Ja. En die staat op php.net. Volg die link maar eens!
Code (php)
1
2
2
$compleet = 'http://www.youtube.com/v/-LzGJozwZDY' ;
$stripped = str_replace('http://www.youtube.com/v/', '', $compleet);
$stripped = str_replace('http://www.youtube.com/v/', '', $compleet);
tadaa
Gewijzigd op 01/09/2010 18:58:23 door stefan Renne
Code (php)
Jens
vind je het erg als ik het niet snap :P
Stefan Renne op 01/09/2010 19:12:14:
vind je het erg als ik het niet snap :P
Als je op php.net kijkt zie je dat parse_url een url helemaal ontleedt en terug geeft in een array. Een van die waarden in de array is query. Die query is alles na het ?
Dit geeft voor http://www.youtube.com/watch?v=ks0P1u6-OUY&feature=channel -> v=ks0P1u6-OUY&feature=channel.
Dit ga je dan exploden op '&', dan krijg je een array met daarin de twee volgende waarde:
v=ks0P1u6-OUY en feature=channel
Die ga je dan exploden op '=', waardoor je een array krijgt met deze twee waarden:
v en ks0P1u6-OUY. Als je waarde 'v' is, dan gaat hij stoppen met dat te doen en heb je je waarde in die $key[1] zitten.
Jens
Edit:
Zoals ik al zei is die code niet getest eh. Dat zal je zelf moeten doen.
Gewijzigd op 01/09/2010 19:17:36 door Jens V
aaaaah nu snap ik hem, tnx voor je duidelijke uitleg!
Werkt het volledig?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$url = 'http://www.youtube.com/watch?v=vLHleQ5ER3o'
$video_id = preg_replace('/^[^v]+v.(.{11}).*/', '\\1', $url);
echo $video_id;
?>
$url = 'http://www.youtube.com/watch?v=vLHleQ5ER3o'
$video_id = preg_replace('/^[^v]+v.(.{11}).*/', '\\1', $url);
echo $video_id;
?>
Gewijzigd op 01/09/2010 20:20:56 door Arjan -
Stefan Renne op 01/09/2010 19:12:14:
vind je het erg als ik het niet snap :P
Ja.
Hebben we hier iets aan?[/modedit]
Antwoord: Ja.
Gewijzigd op 02/09/2010 15:51:25 door niek s
@Jens V werkt super, wat ik me wel afvraag is hoe je uit een complete text een youtube url kan halen en deze meteen kan vervangen voor de youtube html code (net zoiets als smf forum doet)
Voor reguliere expressies moet je niet bij mij zijn, dat is niet zo mijn sterkste kan... Sorry ;)
Arjen - op 01/09/2010 20:15:16:
Je kan ook dit gebruiken (veel makkelijker dan parse_url):
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$url = 'http://www.youtube.com/watch?v=vLHleQ5ER3o'
$video_id = preg_replace('/^[^v]+v.(.{11}).*/', '\\1', $url);
echo $video_id;
?>
$url = 'http://www.youtube.com/watch?v=vLHleQ5ER3o'
$video_id = preg_replace('/^[^v]+v.(.{11}).*/', '\\1', $url);
echo $video_id;
?>
Let wel even op Arjen, jij doet checken op 11 tekens achter de V. Als youtube besluit om meer dan 11 tekens te gaan gebruiken (Als ze meer dan a-zA-Z0-9_- ^ 11 = ~73.786.976.294.838.206.464 video's krijgen tenminste, of een andere syntax met meer of minder code's..) dan werkt jouw code niet meer ;-)
Je kan ook parse_str gebruiken om het query-deel van ded url te parsen. Dat is de functie die php zelf gebruikt om $_GET en (in sommige gevallen) $_POST te vullen.