2011-02-23 30 views

Respuesta

19

Puede usar preg_match para obtener los ID. Voy a cubrir las mismas expresiones más adelante en esta respuesta, pero aquí es la idea básica de cómo usar preg_match:

preg_match('expression(video_id)', "http://www.your.url.here", $matches); 
$video_id = $matches[1]; 

He aquí un desglose de las expresiones para cada tipo de posible entrada que le preguntará sobre. Incluí un enlace para cada uno mostrando algunos casos de prueba y los resultados.

  1. Para URL de YouTube como http://www.youtube.com/watch?v=89OpN_277yY, usted podría utilizar this expresión:

    v=(.{11}) 
    
  2. códigos incrustar YouTube puede o bien tener este aspecto (un poco de materia extraña acortado):

    <object width="640" height="390"> 
        <param name="movie" value="http://www.youtube.com/v/89OpN_277yY?fs=... 
        ... 
    </object> 
    

    O como esto:

    <iframe ... src="http://www.youtube.com/embed/89OpN_277yY" ... </iframe> 
    

    lo tanto una expresión para obtener el ID de cualquiera de los estilos sería this:

    \/v\/(.{11})|\/embed\/(.{11}) 
    
  3. URL Vimeo mirada como http://vimeo.com/<integer>, por lo que yo puedo decir. Lo más bajo que encontré fue simplemente http://vimeo.com/2, y no sé si hay un límite superior, pero supongo por ahora que está limitado a 10 dígitos. Espero que alguien me corrija si conocen los detalles. This expresión podría ser utilizado:

    vimeo\.com\/([0-9]{1,10}) 
    
  4. Vimeo incrustar código toma esta forma:

    <iframe src="http://player.vimeo.com/video/<integer>" width="400" ... 
    

    lo que podría utilizar this expresión:

    player\.vimeo\.com\/video\/([0-9]{1,10}) 
    

    Alternativamente, si la longitud de los números pueden eventualmente exceder 10, puede usar:

    player\.vimeo\.com\/video/([0-9]*)" 
    

    Tenga en cuenta que necesitará el " a ponerse una \ si está incluyendo la expresión entre comillas dobles.


En resumen, no estoy seguro de cómo lo quería para implementar esto, pero bien podría combinar todas las expresiones con |, ya que podría coincidir con cada uno por separado. Agregue un comentario a esta respuesta si desea que proporcione más detalles sobre cómo combinar las expresiones.

+0

TNX por su respuesta .. –

+2

no parecen llegar ninguna coincidencia cuando se utiliza estas expresiones regulares con preg_match. ¿Debo modificarlos de alguna manera o el sabor de la expresión regular es diferente? – cowboybebop

+0

gracias por publicar esto, realmente me ayudó hombre – Julian

0

De acuerdo con la última norma de youtube, puede usar el siguiente código para extraer la identificación de video del código de inserción.

$embed = '<iframe src="//www.youtube.com/embed/n6WYu-pSXH8" frameborder="0"></iframe>'; 
preg_match('~embed/(.*?)"~', $embed, $output); 
echo $output[1]; 

Gracias

Cuestiones relacionadas