Cambiar url por video de youtube php

Me gustaría saber como cambio las urls de youtube que hay en una cadena con php.
Por ejemplo
Tengo una cadena que es un comentario que pone:
mirad este video: http://www.youtube.com/watch?v=-JSsOLeiE8U
entonces la web lo que hace es lo siguiente:
$texto="mirad este video: http://www.youtube.com/watch?v=-JSsOLeiE8U";
$urlabuscar = 'http://www.youtube.com/';
$url=substr($urlabuscar,0,42);
$texto=str_replace($urlabuscar,'<iframe width="420" height="345" src="'.$url.'" frameborder="0" allowfullscreen></iframe>',$texto);
Así no me ha funcionado, el planteamiento esta bien si funcionara, creo. Bueno necesito hacerlo eso.

1 Respuesta

Respuesta
1
¿Mmmm lo que quieres es insertar un vide de youtube en tu web?
Si es así yo lo aria del siguiente modo:
<html>
<head>
<style type="text/css">
body,td,th {color: #FFF;}
body {background-color: #666;}
</style>
<script>
function cambiaId(){
alert("aqui el proceso que te cambia el id.. y listo!");
}
</script>
</head>
<body>
<?Php
$id = "ri1_w4KSPQw";
echo '<center><iframe width="420" height="345" src="http://www.youtube.com/embed/'.$id.'" frameborder="0" allowfullscreen></iframe></center>';
#<iframe width="420" height="345" src="http://www.youtube.com/embed/ri1_w4KSPQw" frameborder="0" allowfullscreen></iframe>
#<iframe width="420" height="345" src="http://www.youtube.com/embed/fs0g6yL6kDc" frameborder="0" allowfullscreen></iframe>
#<iframe width="420" height="345" src="http://www.youtube.com/embed/aVjP_QMR7Mc" frameborder="0" allowfullscreen></iframe>
?>
<a onclick="cambiaId();" href="#">Mira este video</a>
</body>
</html>
Éxitos!
DTB
En realidad, en un chat de mi web, donde los mensajes son guardados en una base de datos. Si un usuario introduce una url de youtube, me gustaría convertirla en un enlace y que esa url mostrara un video en un div flotante de mi web.
No se si quedó claro.
Base de datos => se obtiene un comentario => se busca una url cualquiera de youtube en el comentario => se reemplaza por un hyperlink => el hyperlink mediante javascript muestra el video de youtube en un div flotante en mi web.
Lo del div flotante y el código javascript lo tengo controlado, lo que me gustaría saber es como detectar la url de youtube en el comentario.
Saludos
Mmm.. muéstrame como estas haciendo la consulta a tu DB y como muestras el Chat.
Podrías cuando vas a mostrar el resultado del query validar si existe POR texto y ejecutar la función de la ventana flotante.
Me gustaría conocer la Web.
$consultachat=mysql_db_query("nombre_basededatps","SELECT * FROM chat ORDER BY id DESC");
while($chat=mysql_fetch_row($consultachat)){
$idcomentario=$chat[0];
$idusuario=$chat[1];
$asunto=$chat[2];
$comentario=$chat[3];
$comentario=str_replace(' :)','<img src="images/gift/smallsmile.jpg">',$comentario);
$comentario=str_replace(' :D','<img src="images/gift/bigsmile.png">',$comentario);
$comentario=str_replace(' :P','<img src="images/gift/tongue.png">',$comentario);
$consultachatdos=mysql_db_query("nombre_basededatos", "SELECT * FROM Usuarios WHERE id='$idusuario'");
$chatdos=mysql_fetch_row($consultachatdos);
// Se comprueba si el comentario es del usuario actual //
// si es del usuario actual, permite borrarlo //
if ($idusuario==$row[31]){
print('<tr class="chat_cabecera"><td rowspan="3" valign="top">
<img src="'.$chatdos[30].'" width="30" height="30">
</td>
<td><strong>'.$chatdos[0].': '.$asunto.'</strong></td></tr>
<tr><td></td></tr>
<tr class="chat_cuerpo"><td>'.$comentario.'<br><div align="right"><form method="post" action="intranet.php">
<input type="hidden" value="'.$row[0].'" name="code">
<input type="hidden" value="'.$row[1].'" name="pass">
<input type="hidden" value="'.$idcomentario.'" name="idchat">
<input type="hidden" value="clear" name="act">
<input type="image" src="images/clear.png"></form></div></td>
</tr>
<tr class="chat_divisoria"><td colspan="2"></td></tr>
');
} else {
// Si no es el usuario actual, no permite borrarlo //
// Pero si el usuario es administrador, puede borrarlo //
if ($row[32]=="Administrador"){
print('<tr class="chat_cabecera"><td rowspan="3" valign="top">
<img src="'.$chatdos[30].'" width="30" height="30">
</td>
<td><strong>'.$chatdos[0].': '.$asunto.'</strong></td></tr>
<tr><td></td></tr>
<tr class="chat_cuerpo"><td>'.$comentario.'<br><div align="right"><form method="post" action="intranet.php">
<input type="hidden" value="'.$row[0].'" name="code">
<input type="hidden" value="'.$row[1].'" name="pass">
<input type="hidden" value="'.$idcomentario.'" name="idchat">
<input type="hidden" value="clear" name="act">
<input type="image" src="images/clear.png"></form></div></td>
</tr><tr class="chat_divisoria"><td colspan="2"></td></tr>');
} else {
// Si no es administrador, no permite borrarlo //
print('<tr class="chat_cabecera"><td rowspan="3" valign="top">
<img src="'.$chatdos[30].'" width="30" height="30">
</td>
<td><strong>'.$chatdos[0].': '.$asunto.'</strong></td></tr>
<tr><td></td></tr>
<tr class="chat_cuerpo"><td>'.$comentario.'</td></tr>
</tr><tr class="chat_divisoria"><td colspan="2"></td></tr><tr><td></td></tr>');
}
}
}
Podría validar si existe POR texto, pero como POR texto nunca es igual, sino que puede ser de mil maneras diferentes no se como se haría.
La base de datos tiene una tabla llamada chat, que tiene
- Id del comentario
- Id del usuario que lo creó
- Asunto
- Comentario
Amigo me parece loco lo que quieres hacer pero chevere!
Mira esto:
$mensaje = "65 6546 546 54 4 lk jlkj lj lk lk lk l l http://www.youtube.com/watch?v=OUe3oVlxLSA&feature=topvideos_music jlkjl klk lk k llk l lk lk lk lk lk l k lo ijoi jo jo";
$youtube= parse_url($mensaje);
echo print_r($youtube);
echo "<br> Obtengo el Id: ".substr($youtube['query'],2,12);
Extraigo una url de POR texto. Lo que tendrías que validar es que el path sea igual a youtube y listo! Extraes el ID.
Éxitos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas