Visualizzazione dei risultati da 1 a 8 su 8

Discussione: debole sulle RE

  1. #1

    debole sulle RE

    Questo è il codice per rendere cliccabile un e-mail:

    codice:
    $text =~ s/([\w\-\.]+\@[\w\-\.]+\.[\w\-]+)/<a href='mailto:$1'>$1<\/a>/g;
    lo studiato ma non riesco ad usarlo come modello per creare un'alto codice per rendere cliccabile gli indirizzi web...(che inizino solo con http:// e non solo con www)

    sono una schiappa con le RE!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Chiaramente devi fare una cosa separata. Il tag e` leggermente diverso tra link e mailto:

    Prova a vedere come ti sembra questo (anch'io sto studiando le RE, e prendo delle cantonate sonore).
    codice:
    $text =~ s/((http\:[\/\\]{2})|(www\.)??([\w\-]+?\.)+?([\w\-]+?[\/\\])+
    [\w\-]+?(\.\w+)??(\#[\w\-]+)??(\?[\w\-]+)??/\<a href\=\'$^N\'\>$^N\<\/a\>/g;
    Nota che ho usato $^N per il match.
    Nota: ho inserito un "acapo", che nella RE dovrai togliere

    In alternativa nel match devi usare (?...) per tutte le parentesi tranne quella piu` esterna se vuoi usare il $1
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Purtroppo il tuo codice non parte proprio....guarda,mi accontento che inizio sia con http:// che con www

    magari semplifica tutto?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Hai ragione: occorre cercare di limitare. poi quando va, si possono inserire gli altri pezzi.

    Prova cosi`:

    $text =~ s/((?http\:[\/\\]{2})|(?www\.)??.+)[ \>\"\']/\<a href\='$1'\>$1\<\/a\>/g;
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    il mio interprete dice:

    # Sequence (?h...) not recognized.
    File 'Untitled'; Line 4
    questo era il codice:

    codice:
    #!/perl
    
    $text = "http://www.ciao.it";
    $text =~ s/((?http\:[\/\\]{2})|(?www\.)??.+)[ \>\"']/\<a href\='$1'\>$1\<\/a\>/g;
    
    print $text;

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ho ri-trovato il posto del manuale dove sono citate le parentesi. La sintassi e` (?: (avevo dimenticato i duepunti).

    Quindi:
    $text =~ s/((?:http\:[\/\\]{2})|(?www\.)??.+)[ \>\"\']/\<a href\=\'$1\'\>$1\<\/a\>/g;

    Occhio alle backslash. Il forum se ne e` mangiate alcune.
    Fai un quote del messaggio prima del copia-incolla.

    Nota: La fine della stringa io la ho pensata con uno dei caratteri:
    spazio, maggiore, virgolette, apice
    Ma magari vuoi un controllo migliore, magari riprendendo il carattere iniziale:
    $text =~ s/(\=|[ \"\'])((?:http\:[\/\\]{2})|(?www\.)??.+)\>|\1/\<a href\=\'$2\'\>$2\<\/a\>/g;
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    # Sequence (?w...) not recognized.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Idem come sopra: mancano i duepunti anche li`.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.