Visualizzazione dei risultati da 1 a 8 su 8

Discussione: RegEx per URL YouTube

  1. #1

    RegEx per URL YouTube

    Salve a tutti, dopo diversi giorni di ricerche ed esperimenti con le espressioni regolari, ho deciso di chiedere un disperato aiuto al forum di html.it.

    Devo salvare su DB il classico code dei video YouTube, tuttavia vorrei "isolare" solamente
    la parte URL in fase di salvataggio scrivendo solamente l 'URL video, senza embed.

    A questo proposito la RegEX che non riesco a comporre, deve eliminare con replace tutta la parte dei tag object, param, embed lasciando solo il code che ho evidenziato in grassetto.


    Codice PHP:
    <object width="425" height="344">
    <
    param name="movie" value="[B][i][url]http://www.youtube.com/v/ASAK3XtwkEA&hl=it&fs=1&color1=0x402061&color2=0x9461ca[/url][/i][/B]"></param>
    <
    param name="allowFullScreen" value="true"></param>
    <
    embed src="" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed>
    </
    object
    Cominciai diversi giorni fa, lavorando su questa funzione cercando di creare la RegEx utile al mio scopo.

    Codice PHP:
         Function pulisciTube(Stringa)
             
    Dim RegExTemp

             Temp 
    Stringa
            Set RegEx 
    = New RegExp
            RegEx
    .Pattern = [B]"[object]+[a-z0-9]....qui mi sono seriamente incasinato...aiuto!"[/B
            
    RegEx.Global = True
            RegEx
    .IgnoreCase True
            Temp 
    RegEx.Replace(Temp"")
             
    Set RegEx Nothing
             pulisciTube 
    Temp
         End 
    Function 
    PS: In rete non si trova proprio nulla riguardo funzioni per questo scopo, ho trovato solo per PHP ma non per VB, peccato.

    Spero che qualche buona anima generosa possa risolvere questa necessità, sicuramente utile anche per molti altri utenti.
    Grazie
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  2. #2
    il pattern delle regex è indipendente dal linguaggio. quello che hai trovato per php va bene anche per asp

  3. #3
    La funzione che ho trovato in rete è però in linguaggio Java, comunque sarebbe da convertire il VB.

    Questo script dovrebbe estrarre l'URL del video isolandolo dall'embed, poi dovrebbe controllarne anche la validità, esso è per PHP, non è giusto che in rete ci sia solo questo, forse è giunto il momento di convertire la seguente funzione anche per ASP.


    Codice PHP:

    function EstraiCodiceYoutube($url){
    if(
    preg_match('/^http:\/\/(?:[A-Za-z0-9.]{2,5}\.)?youtube.com\/watch\?v=([0-9A-Za-z-_]{11})$/'$url)){
    preg_match('/^http:\/\/(?:[A-Za-z0-9.]{2,5}\.)?youtube.com\/watch\?v=([0-9A-Za-z-_]{11})$/'$url$match);
    if(
    count($match)==2){
    return 
    $match[1];
    }else{
    return 
    "";
    }
    }else{
    return 
    "";
    }

    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  4. #4
    dovrebbe essere

    codice:
    ...
    RegEx.Pattern = "/^http://(?:[A-Za-z0-9.]{2,5}.)?youtube.com/watch?v=([0-9A-Za-z-_]{11})$/"
    ...
    prova

  5. #5
    Dunque ho modificato la funzione così:

    Codice PHP:

         
    Function pulisciTube(Stringa)
             
    Dim RegExTemp

             Temp 
    Stringa
            Set RegEx 
    = New RegExp
            RegEx
    .Pattern "/^[url]http://[/url](?:[A-Za-z0-9.]{2,5}.)?youtube.com/v=([0-9A-Za-z-_]{11})$/"
            
    RegEx.Global = True
            RegEx
    .IgnoreCase True
            Temp 
    RegEx.Replace(Temp"")

             
    Set RegEx Nothing

             pulisciTube 
    Temp
         End 
    Function 

    In teoria la RegEx doveva individuare solo l'URL e con il replace eliminarlo, però testando la funzione, pare che l'intero codice rimanga invariato. Se almeno eliminasse il codice URL saremmo a metà strada, dato che la funzione dovrebbe servire a ripulire l'intero codice dagli embed lasciando solo il video.
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Le virgolette interne al pattern le devi raddoppiare...

    Roby

  7. #7
    Si ma in realtà non ci sono apici nel pattern, sono comparsi per causa della opzione relativa agli URL automatici qui nel forum, che ora ho disabilitato.


    [PHP]

    Function pulisciTube(Stringa)
    Dim RegEx, Temp

    Temp = Stringa
    Set RegEx = New RegExp
    RegEx.Pattern = "/^http://(?:[A-Za-z0-9.]{2,5}.)?youtube.com/v=([0-9A-Za-z-_]{11})$/"
    RegEx.Global = True
    RegEx.IgnoreCase = True
    Temp = RegEx.Replace(Temp, "")

    Set RegEx = Nothing

    pulisciTube = Temp
    End Function

    PHP]


    Il risultato di questa funzione è così:

    Codice PHP:
    <object width="425" height="344">
    <
    param name="movie" value="[B][url]http://www.youtube.com/v/ASAK3XtwkEA&hl=it&fs=1&color1=0x402061&color2=0x9461ca[/url][/B] "></param>
    <
    param name="allowFullScreen" value="true"></param>
    <
    embed src="http://www.youtube.com/v/ASAK3XtwkEA&hl=it&fs=1&color1=0x402061&color2=0x9461ca" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object
    Non capisco il perchè ma non ha tolto il codice video. chiedo aiuto agli esperti.
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  8. #8
    Utente di HTML.it L'avatar di jonnyl
    Registrato dal
    Dec 2003
    Messaggi
    180
    Uff perche non funziona ??? Sto cercando anche io una regex che mi estragga il link youtube.
    Non funziona questa .....sto guardando dappertutto , prima di chiedere aiuto ho cercato nel forum ma trovo qusto post senza soluzione.

    codice:
    'txtembed="è il codice copia incolla di un qualsiasi filmato youtube"
    set replay = New RegExp
    replay.Pattern ="/^http://(?:[A-Za-z0-9.]{2,5}.)?youtube.com/v=([0-9A-Za-z-_ {11})$/"
    
    replay.IgnoreCase = True
    replay.Global = True
    
    myarray=split(txtembed,"""")
    for k=0 to ubound(myarray)
       if replay.test(txtembed)=true then
          txtembed=replace(txtembed,myarray(k),myarray(k)&"&autoplay=1")
       end if 				
    next
    set replay = Nothing
    Sto provando ad aggiungere solo l'autoplay , mi manca la regex.
    La verifica se autoplay non è già presente l'aggiungo poi.

    Qualcuno da una mano con sta regez ? AIUT
    Kovalsky per gli amici.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.