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 :

Trouver une URL dans un texte [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut Trouver une URL dans un texte / Rendre une URL cliquable
    Bonjour les gens !

    Alors voilà, je me lance dans les regex. Sauf que là, j'ai un problème. Je souhaite faire une recherche dans un texte qui serait écrit sur le tagboard de mon site. Ca fait maintenant plusieurs heures que je parcours la toile avec mon grand ami google, mais il n'a pu me trouver que des sources pas très intéressante pour moi (en gros, elles fonctionnent pas dans tous les cas que j'ai pu trouver). Malgrès tout, il m'a trouvé un site très intéressant qui m'a appris les regex (http://www.expreg.com). Je vous le recommande au passage.

    Bref, ce que je cherche, c'est une personne qui pourrait me dire ce qui ne va pas dans ma regex. Ne dit-on pas qu'un oeil neuf peut trouver les erreurs qui sont sous le nez des programmeurs ? Bref, la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $expreg = "`"; // Début de ligne
    $expreg .= "((http|news|ftp|https|irc)://)?"; // Le protocole et les "://", présent ou non
    $expreg .= "(www\.)?"; // Les 3 W, présent ou non
    $expreg .= "([a-zA-Z0-9]\.)+"; // Le domaine ou sous-domaine, alphanum, présent au moins une fois
    $expreg .= "[a-zA-Z]{2,4}"; // l'extention, mini 2 et maxi 3 caractères
    $expreg .= "(/[a-zA-Z0-9])*"; // les dossiers, sous dossier ou nom de fichier, alphanum, absent ou plusieurs
    $expreg .= "(\.[a-zA-Z0-9]{2,4})?"; // l'extention de fichier, alphanum, présent ou non
    $expreg .= "`"; // Fin de ligne
    Je la veux utile dans absolument tous les cas, comme c'est ma première, je l'ai complétement détaillée. Le soucis, c'est que j'ai aucune erreur. La seule chose qui ne va pas, c'est que le texte testé n'est pas réaffiché...

    Dernière info, j'utilise une commande PCRE, la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = preg_replace($expreg, "¤URL¤", $message_a_tester);
    Voilà, j'espère que quelqu'un pourra me dire ce que j'ai pas vu et sourtout me l'expliquer que je ne reste pas idiote Merci d'avance !

  2. #2
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    j'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
     
    $expreg = "`"; // Début de ligne
    $expreg .= "((http|news|ftp|https|irc)://)?"; // Le protocole et les "://", présent ou non
    $expreg .= "(www\.)?"; // Les 3 W, présent ou non
    $expreg .= "([a-zA-Z0-9]\.)+"; // Le domaine ou sous-domaine, alphanum, présent au moins une fois
    $expreg .= "[a-zA-Z]{2,4}"; // l'extention, mini 2 et maxi 3 caractères
    $expreg .= "(/[a-zA-Z0-9])*"; // les dossiers, sous dossier ou nom de fichier, alphanum, absent ou plusieurs
    $expreg .= "(\.[a-zA-Z0-9]{2,4})?"; // l'extention de fichier, alphanum, présent ou non
    $expreg .= "`"; // Fin de ligne
     
    $message_a_tester = "test http://www.frol.be/test.php";
    $message = preg_replace($expreg, "URL", $message_a_tester);
    echo $message;
    ?>
    je n'ai pas le même problème que toi c'est a dire que le texte s'affiche mais non correctement formaté, ça me retourne ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test http://wwURL/tesURL
    maintenant juste un conseil pour toi mais tu l'as peut être déjà fait, met ceci dans une fonction ce sera plus facilement réutilisable

  3. #3
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    voici la fonction qui marche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /** this method replace one url in theText(param) by "URL"
    *@param theText : the text to replace
    *@return theText with the urls replaced by "URL"
    */
    function replaceUrl($theText){
        $expreg = "`"; // Début de ligne
        $expreg .= "((http|news|ftp|https|irc)://)?"; // Le protocole et les "://", présent ou non
     
        //inutile car www. est un sous-domaine comme les autres
        $expreg .= "(www\.)?"; // Les 3 W, présent ou non
     
        //ici il y avait une erreur a toi de chercher 
        $expreg .= "(([a-zA-Z0-9])*\.)+"; // Le domaine ou sous-domaine, alphanum, présent au moins une fois
        $expreg .= "[a-zA-Z]{2,4}"; // l'extention, mini 2 et maxi 3 caractères
     
        //ici pa obligé d'avoir de sous dossiers et une autre erreur
        $expreg .= "(/([a-zA-Z0-9])*)?"; // les dossiers, sous dossier ou nom de fichier, alphanum, absent ou plusieurs
        $expreg .= "(\.[a-zA-Z0-9]{2,4})?"; // l'extention de fichier, alphanum, présent ou non
        $expreg .= "`"; // Fin de ligne
     
        return preg_replace($expreg, "URL", $theText);
    }

  4. #4
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    Ca y est !!! Super ta correction !!! Merci bien. Ca m'a bien aider, j'ai tout compris.

    Je vais me lancer pour essayer de faire la même chose pour des adresses mails. Maintenant que j'ai compris l'erreur, j'vais y arriver.

    Autre chose, l'erreur que tu as eu, j'l'ai eu aussi. Je pense que le soucis qui a causé ça venait de mon erreur, là où je mettait pas les étoiles :


  5. #5
    Membre expérimenté Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Par défaut
    en fait tu mettais les étoiles trop tard (voir la fonction correctif que j'ai mise)

    donc tu répétais une lettre et un point par exemple mais il fallait répéter plusieurs lettres et un point.

    Si tu fais ceci dans le but de remplacer une url par un lien avec l'url tu peux la poster ici ça fera plaisir à beaucoup de personnes

  6. #6
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Septembre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Septembre 2007
    Messages : 25
    Par défaut
    Euh, j'ai pas trop compris ton dernier message frol

    remplacer une url par un lien avec l'url
    Bouh j'ai des pb avec les mails ... J'vais faire un new post.

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

Discussions similaires

  1. [RegEx] Réduire une URL dans un texte et la rendre active
    Par CinePhil dans le forum Langage
    Réponses: 11
    Dernier message: 10/09/2012, 23h39
  2. Insérer une URL dans du texte
    Par atm0sfe4r dans le forum wxWidgets
    Réponses: 5
    Dernier message: 24/04/2009, 09h48
  3. Parser une url dans un string au format texte
    Par andromeda dans le forum C#
    Réponses: 2
    Dernier message: 02/02/2009, 04h16
  4. trouver une virgule dans un champ texte
    Par marcuswillbe dans le forum Formules
    Réponses: 1
    Dernier message: 18/01/2009, 17h08
  5. Réponses: 3
    Dernier message: 27/04/2006, 13h33

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