Visualizzazione dei risultati da 1 a 3 su 3

Discussione: preg_match & youtube

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    108

    preg_match & youtube

    codice:
    preg_match("/[http:\/\/]?[www\.]?youtube\.(com|it)\/(watch\?v=|v\/)(.{11})/i", $link, $parte);
    print $parte[3];
    Ho la necessità di estrarre dai diversi "tipi" di link di youtube il codice che ricollega al video.
    Potete verificare la correttezza? E se ho tralasciato qualcosa? L'OR è attuabile soltanto attraverso parentesi? Non voglio mi esca il codice del video come [3], ma come [1].

  2. #2
    Le parentesi quadre sono sbagliate, servono per le character class non come raggruppatori.
    Se devi raggruppare ma non catturare, usa i non-capturing groups (?: ... )
    Se usi pattern con gli slash, usa separatori diversi cosi' non devi infarcire il tutto di backslash

    Prova questo, scritto al volo non testato:

    codice:
    preg_match("#(?:http://)?(?:www\.)?youtube\.(?:com|it)/(?:watch\?v=|v/)(.{11})#i", $link, $parte);
    print $parte[1];

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    108
    Perfetto.
    Ho imparato ben due cose, grazie.

    Per chi volesse, ecco la index.php. Mi serve per la costruzione di una galleria video.

    codice:
    <?php
    print "<form action=\"index.php\" method=\"get\">
    <input type=\"text\" name=\"link\" />
    <input type=\"submit\" value=\"Cerca\" />
    </form>\n";
    if (!empty($_GET["link"])) {
    $link=$_GET["link"];
    preg_match("#(?:http://)?(?:www\.)?youtube\.(?:com|it)/(?:watch\?v=|v/)(.{11})#i", $link, $parte);
    header("location: index.php?yt=".$parte[1]);
    }
    if (!empty($_GET["yt"]))
    print "<object width=\"480\" height=\"385\"><param name=\"movie\" value=\"http://www.youtube.com/v/".$_GET["yt"]."?fs=1&amp;hl=it_IT\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/".$_GET["yt"]."?fs=1&amp;hl=it_IT\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"480\" height=\"385\"></embed></object>";
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.