1. Enorable
  2. Lenguajes De Programación
  3. Php
10
 
28/02/2021 |  vistas:

PHP: Función para insertar o incrustar videos de YouTube en páginas web de terceros

Función escrita en PHP para insertar o incrustar videos de YouTube de manera más rápida, sencilla y eficiente haciendo uso del enlace original de los videos de YouTube únicamente.

La mayoría de los videos de YouTube se pueden insertar o incrustar en páginas web de terceros haciendo uso de una de las opciones para compartir contenido que están dispuestas en los canales de los creadores de videos, conforme a las directrices y condiciones de uso. Sin embargo, cuando eres desarrollador, programador o webmaster siempre se hace indispensable reducir al máximo el hilo de trabajo para lograr un objetivo o fin previamente establecido.

Cuando vemos un video en la página para escritorio de YouTube podemos ver la opción de «Compartir» disponible debajo del contenido principal, si hacemos clic sobre dicha opción un cuadro superpuesto es desplegado en la página para mostrarnos nuevas opciones para compartir el video, entre los que se destacan «Insertar», «Facebook», «Twitter», «Email» y «Reddit». Al hacer clic en la opción de «Insertar» un nuevo cuadro nos muestra un código de inserción HTML junto con una previsualización del video que queremos compartir y nos permite copiar dicho código para luego manualmente pegar en cualquier parte del documento de nuestra página web.

Como se pueden dar cuenta hacen falta al menos tres pasos para lograr el cometido de insertar un video de YouTube en una página web propia, pero podemos reducir el número de pasos de este proceso con esta función escrita en PHP al tan solo leer el enlace del video de YouTube.

NOTA: la función trabaja solamente con la estructura de los enlaces de los videos de YouTube de la versión de escritorio, por ejemplo: https://www.youtube.com/watch?v=vcsSc2iksC0.

Puede comprar el resultado de la función a través de una demostración en vivo.

Para comprender el código es necesario conocer lo siguiente:

  • Se requieren conocimientos básicos de HTML y php.
  • El código implementado fue probado en la versión 7.3 de php y un entorno de prueba de Apache
  • La función php ha sido nombra como «its_youtube_link»

Función en PHP para insertar o incrustar videos de YouTube en páginas web

<?php

/**
* Función PHP para incrustrar videos de YouTube dinámicamente
* @function its_youtube_link
* @param $string, $width, $height, $controls, $autoplay, $start, $end, $loop, $origin
* @return iframe con enlace embed de YouTube
*/

function its_youtube_link( $string,
$width = '100%',
$height = '270px',
$controls = 1,
$autoplay = 0,
$start = 0,
$end = 0,
$loop = 0,
$origin = false ) {

// Encuentra dentro del contenido todos los enlaces de YouTube
// Que tengan la siguiente estructura: "https://www.youtube.com/watch?v=vcsSc2iksC0"
// Y reemplaza el subpatrón "watch\?v=" por "/embed/"
// Cuando el parámetro $loop se activa,
// entonces el ID del video es usado y $start entra en juego con el valor 0

if( isset( $string )
&& preg_match_all( "/(?:http:|https:)\/\/*?(?:www.youtube.com)\/(?:watch\?v=)([a-zA-Z0-9_\-\?\=]+)/", $string, $coin, PREG_PATTERN_ORDER ) ) {
$idYoutube = $coin[1]; // ID del enlace de YouTube, ej: "vcsSc2iksC0"
if( is_array( $coin[0] ) )
foreach( $coin[0] as $k => $h ) {
if( !empty( $h ) ) {
if ( is_array( $idYoutube ) ){
foreach( $idYoutube as $l => $id ){
if( $l === $k ){
$idYoutube = $id;
}
}
}
}
}
}

// Si $origin es "false" entonces retorna un "iframe"
// Si $origin es "true" retorna el enlace de YouTube original
// Retorna "false" cuando no se encuentre un enlace de YouTube correcto

return ( isset( $h ) && $origin === false )
? '<iframe src="'.str_replace( '/watch?v=', '/embed/', $h.'?controls='.$controls.'&autoplay='.$autoplay.'&rel=0'
.( ( $loop == 1 && !empty( $idYoutube ) )
? '&loop=1&playlist='.$idYoutube.'&start='.$start
.( ( $end > 0 )
? '&end='.$end
: '' )
: '' ) )
.'" width="'.$width.'" height="'.$height.'" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>'.$h.'</iframe>'
: ( ( isset( $h ) && $origin === true )
? $h
: false );
}
?>

Explicando la funcionalidad de este recurso PHP.

El recurso que he creado lo que hace es encontrar una combinación de subpatrones mediante el uso de expresiones regulares ("/(?:http:|https:)\/\/*?(?:www.youtube.com)\/(?:watch\?v=)([a-zA-Z0-9_\-\?\=]+)/"). Si tenemos suerte de encontrar lo que buscamos, entonces se procede a almacenar los valores que requerimos para reemplazar la cadena "/watch?v=" por "/embed/" y al mismo tiempo crear nuestro iframe.

La función maneja algunos parámetros de utilidad que permiten que ciertas características de los videos de YouTube estén o no activas. Estos son:

  • string, cadena que contiene el enlace del video de YouTube
  • width, ancho del reproductor del video
  • height, altura del reproductor del video
  • controls, activa o no los controles del reproductor de video
  • autoplay, activa o no la reproducción automática del video (en algunos dispositivos móviles puede no estar activa)
  • start, número entero que indica el segundo inicio del video
  • end, número entero que indica los segundos del fin del video
  • origin, valor booleano que establece si es un iframe o el enlace original del video («false» para «iframe»)

Ejemplos de uso de la función

<?php

// Invocando la función its_youtube_link creada en PHP

echo its_youtube_link( "https://www.youtube.com/watch?v=vcsSc2iksC0", '100%', '270px', 1, 0, 0, 0, 0, false );

?>
<?php

// Invocando la función donde el enlace de YouTube está dentro de una publicación, artículo o post

$data = "<h2>Explicación de la funcionalidad de este recurso:</h2>Aunque no lo crea, el texto que estamos visualizando forma parte de una cadena de caracteres que ha sido pasada como parámetro a la función mediante una variable.<br /><br />En realidad el enlace del video de YouTube que estamos buscando para insertar está justamente aquí <strong>(\"https://www.youtube.com/watch?v=vcsSc2iksC0\")</strong>, sin embargo, esto no impide que sea leído e incrustado en nuestra página como vemos abajo.";
echo '<p>'.$data.'</p>';
echo its_youtube_link( $data, '100%', '270px', 1, 0, 0, 0, 0, false );
echo "<p>Video de YouTube: ".its_youtube_link( $data, '100%', '270px', 1, 0, 0, 0, 0, true ).' ($origin = true)'."</p>";

?>

Si todo va bien con la implementación del recurso, al refrescar la página web donde se está invocando la función veremos aparecer el video insertado con el reproductor de YouTube en las dimensiones y con las opciones que se han establecido mediante los parámetros de la función.
Consulta Lo+ Top de Lenguajes De Programación
 
Todos los titulares en un solo lugar...