IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Détection URL et e-mail


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 52
    Par défaut Détection URL et e-mail
    Bonjour à tous,

    j'ai un petit module à réaliser dans lequel l'utilisateur peut saisir un commentaire.

    J'aimerais détecter dans ce texte les URLs ou emails que l'utilisateur aurait pu saisir. Peut-être utiliser les expressions régulières, mais si vous aviez déjà un script tout prêt ça m'arrangerait bien.

    Merci à vous
    Yousky

  2. #2
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Voilà ce que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //Transform URL and e-mails into links
    $texte = eregi_replace(
       "(^|[ \t\r\n\(:,]+)?". //punctuation before URL
       //Protocole
       "((ftp|http|https|gopher|mailto|pop|smtp|news|nntp|telnet|wais|".
       "file|imap|prospero|peercast|ed2k|irc|aim|mime|ftam|pnm|rtsp|ldap):".
       "[A-Za-z0-9/](([A-Za-z0-9$|.+!*()\.,;/?:@&~=_-])|%[A-Fa-f0-9]{2})+".
       "[A-Za-z0-9/&#=_-]+)". //valid chars at the end of an URL
       "([\.\),:;? \t\r\n]+([^A-Za-z0-9/&%#=_-]|$))?", //punctuation not followed by valid char
     "\\1<a href='\\2' target=\"blank\">\\2</a>\\6", $texte);
    Pour une fois que j'ai une réponse avant tout le monde !

  3. #3
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    Je trouve cela restrictif, si jamais un autre protocol est utilisé comme lien, ta regex ne la captura pas :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $regex = '/^[a-zA-Z0-9]+:(?:\/\/)?[-a-zA-Z0-9_\.])+ ** là on ajoute de quoi gérer tout ce qui peut être auth FTP, port mais aussi le path and co...$/';
    Voilà ce n'est pas complet mais le début est plus générique.

  4. #4
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Citation Envoyé par Grepsd Voir le message
    ... si jamais un autre protocol est utilisé comme lien, ta regex ne la captura pas
    A quel protocole fais-tu allusion qui ne soit pas dans la liste suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ftp|http|https|gopher|mailto|pop|smtp|news|nntp|telnet|wais|file|imap|prospero|peercast|ed2k|irc|aim|mime|ftam|pnm|rtsp|ldap

  5. #5
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    Justement, un autre, qui n'est pas dans cette liste, ne serais pas détecter.

    Il ne faut pas oublier que le net évolue vite et qu'il y a certainement des protocoles utilisés qui ne sont pas dans cette liste, quant à te dire lesquels, je ne saurais te répondre étant donné que ta liste contient les principaux et que je n'ai pas pris le soin de les lire individuellement.

  6. #6
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Et avec cette expression régulière ^^ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ^((https?|ftp)\://((\[?(\d{1,3}\.){3}\d{1,3}\]?)|(([-a-zA-Z0-9]+\.)+[a-zA-Z]{2,4}))(\:\d+)?(/[-a-zA-Z0-9._?,'+&amp;%$#=~\\]+)*/?)$
    Ca matchera par exemple :
    http://83.32.60.40/home.php ou ftp://ftp.monsite.com/ ou encore https://www.votresite.com/accueil.asp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] modifier l'url dans les mails d'alertes (SP2003)
    Par hmoad dans le forum Développement Sharepoint
    Réponses: 0
    Dernier message: 12/06/2012, 14h43
  2. URL caché dans mail
    Par denis.henkens dans le forum PL/SQL
    Réponses: 8
    Dernier message: 23/12/2011, 12h28
  3. [RegEx] Détection URL qui ne fonctionne pas
    Par mdr_cedrick dans le forum Langage
    Réponses: 3
    Dernier message: 21/07/2009, 09h53
  4. [XPath] détection url et email dans un noeud
    Par robert_trudel dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/02/2007, 04h27
  5. Réponses: 1
    Dernier message: 03/12/2005, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo