Cita:
Iniciado por Triby Yo normalmente lo hago con una expresión regular que encontré en otro foro:
Me ha funcionado correctamente, será cuestión de que lo pruebes para ver si hay errores.
Hola Triby, corrijo un pequeño error en tu function, cambio $value por $url, luego de eso funciona bien, el único problema es que hay una que la devuelve mal ( ClgJpUn4awk?hd=1 ) no le quita el ?hd=1
Código PHP:
function youtubeId($url) {
if($url != '') {
$match = preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $url, $matches);
if((int) $match > 0) {
return $matches[0];
}
}
return false;
}
$cadena = array();
$cadena[] = "http://www.youtube.com/watch?v=ClgJpUn4awk&feature=related";
$cadena[] = "http://www.youtube.com/watch?v=ClgJpUn4awk&hd=1";
$cadena[] = "http://youtu.be/ClgJpUn4awk";
$cadena[] = "http://youtu.be/ClgJpUn4awk?hd=1";
$cadena[] = "http://www.youtube.com/watch?feature=player_embedded&v=gYem0OuaV8o";
// ESTA URL NO EXISTE, POR LO TANTO DEVUELVE FALSE
$cadena[] = "http://www.youtube.com/watch?v=ClgJpUdfhfdhfgn4awk&feature=related";
foreach($cadena as $v){
echo $v;
echo '<br/>';
echo '---->'.youtubeId($v);
echo '<br/>';
echo '<br/>';
}