Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Espressione regolare per URL

    Ciao a tutti,
    qualcuno avrebbe sotto mano una espressione regolare "seria" per validare URL ed indirizzi e-mail?

    Tnx a lot
    GNU/Linux is the answer...now, what was your question?

  2. #2
    validare e-mail io mi sono fatto
    $expression = "^[._A-Za-z0-9-]+@[_A-Za-z0-9-]+(\.[A-Za-z]+)(\.[A-Za-z]+)*$";

    però è fatta da me quindi non saprei dirti se ha problemi, a me funzia bene però non ho fatto test avanzati.

    per le url non capisco che validazione vuoi.
    ciao, vuoi che comprenda il www, l'http:// o altro.
    ciao

  3. #3
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392
    Originariamente inviato da massimo80
    validare e-mail io mi sono fatto
    $expression = "^[._A-Za-z0-9-]+@[_A-Za-z0-9-]+(\.[A-Za-z]+)(\.[A-Za-z]+)*$";

    però è fatta da me quindi non saprei dirti se ha problemi, a me funzia bene però non ho fatto test avanzati.

    per le url non capisco che validazione vuoi.
    ciao, vuoi che comprenda il www, l'http:// o altro.
    ciao
    Un pò lunghetta eh?

    Quella se non mi sbaglio è una posix, usa un PERL compatible, sono più veloci:


    $url = 'cio http://www.ciao.it coi';
    preg_match_all("|((http:\/\/)|(www))\.(.*)\.(.*)|iu", $url, $array);

    Non l'ho testata ma deve andare. Se $array è vuoto, vuol dire che non ha trovato url, se ne trova, diventa un array contenente tutti gli url che ha trovato.





  4. #4
    Originariamente inviato da PaTeR
    Un pò lunghetta eh?

    Quella se non mi sbaglio è una posix, usa un PERL compatible, sono più veloci:


    $url = 'cio http://www.ciao.it coi';
    preg_match_all("|((http:\/\/)|(www))\.(.*)\.(.*)|iu", $url, $array);

    Non l'ho testata ma deve andare. Se $array è vuoto, vuol dire che non ha trovato url, se ne trova, diventa un array contenente tutti gli url che ha trovato.
    Grazie Pater, non l'ho provata, ma a vederla penso che non riesca a validare http://qualcosa.dominio.tld
    GNU/Linux is the answer...now, what was your question?

  5. #5
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392
    Originariamente inviato da genset
    Grazie Pater, non l'ho provata, ma a vederla penso che non riesca a validare http://qualcosa.dominio.tld
    Conosci le espressioni regolari??

    Quella ti cerca le frasi che iniziano con http:// o www, che abbiano un qualcosa dopo quello di prima, e poi cerca se c'è un suffisso.






    PS: Precisazione, usa questa:

    $url = 'cio http://www.ciao.it coi';
    preg_match_all("|((http:\/\/)|(www\.))(.*)\.(.*)|iu", $url, $array);

    Avevoi sbagliato un . fuori posto.

  6. #6
    Originariamente inviato da PaTeR
    Conosci le espressioni regolari??

    Quella ti cerca le frasi che iniziano con http:// o www, che abbiano un qualcosa dopo quello di prima, e poi cerca se c'è un suffisso.






    PS: Precisazione, usa questa:

    $url = 'cio http://www.ciao.it coi';
    preg_match_all("|((http:\/\/)|(www\.))(.*)\.(.*)|iu", $url, $array);

    Avevoi sbagliato un . fuori posto.
    Non le conosco benissimo, ma qualcosa ci capisco!
    La tua quindi non mi valida un sito che non inizia per www o per http://, cioè: qualcosa.dominio.tld.
    Mi conviene allora fare un controllo prima, se non c'è "http://" all'inizio della stringa glielo aggiungo, poi passo la stringa modificata in pasto alla tua espressione regolare. Così dovrei essere sicuro che me la valida sempre correttamente.
    GNU/Linux is the answer...now, what was your question?

  7. #7
    è stata fatta una discussione lunghissima tempo fa per trovare un espressione regolare che riuscisse a validare un'url senza ambiguità e non mi ricordo se alla fine ne era stata trovata una all'altezza.

    Validare un'url è cosa moooolto complicata. Io avevo tratto da quella discussione questa funzione:

    function IsUrl( $valore ){
    $er = "/^((http|https|ftp):\/\/|[w]{3}[0-9]{0,1}\.)([a-zA-Z0-9]([a-zA-Z0-9\-_]+\.|[a-zA-Z0-9\-_]+|)+[a-zA-Z0-9]\.[a-zA-Z]{2,6})(:[0-9]{1,5}|)(\/.{0,1024}|)$/i";

    return (preg_match($er, $valore));
    }


    come vedete voi stessi la regex non è proprio delle più semplici

    byezzz
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    Originariamente inviato da 13manuel84
    è stata fatta una discussione lunghissima tempo fa per trovare un espressione regolare che riuscisse a validare un'url senza ambiguità e non mi ricordo se alla fine ne era stata trovata una all'altezza.
    Ciao,
    si mi ricordo quella discussione, era più di un anno fa però! E non sono riuscito a trovarla con la ricerca, speravo appunto che qualcuno si fosse salvato l'espressione.

    Grazie mille

    GNU/Linux is the answer...now, what was your question?

  9. #9
    Originariamente inviato da 13manuel84
    function IsUrl( $valore ){
    $er = "/^((http|https|ftp):\/\/|[w]{3}[0-9]{0,1}\.)([a-zA-Z0-9]([a-zA-Z0-9\-_]+\.|[a-zA-Z0-9\-_]+|)+[a-zA-Z0-9]\.[a-zA-Z]{2,6})(:[0-9]{1,5}|)(\/.{0,1024}|)$/i";

    return (preg_match($er, $valore));
    }
    Comunque anche questa non mi valida la stringa se non inizia con il protocollo o con www, ad esempio
    $valore = "qualcosa.dominio.tld";

    GNU/Linux is the answer...now, what was your question?

  10. #10
    un'url completa inizia sempre con il protocollo, se vuoi validare parte di un'url quella è un'altra cosa...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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