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 :

Expression régulière pour réduire des URL [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 177
    Points
    177
    Par défaut Expression régulière pour réduire des URL
    Voilà, comme implémenté sur certains forums, j'aimerai via expressions régulières, "réduire" les URL trop longues.

    exemple, que http://www.blablablablablablablablablabla.com s'affiche http://www.blabla...bla.com


    le but est de ne pas ecarteler les pages comme cela le fait quand la longueure des liens dépasse leur largeure.


    merci d'avance

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    pas besoin d'une regexp pour ça...

    ton URL est trop longue, tu prends N caracatères du début (substr), N de la fn (faut être sûr que l'URL a une taille > 2N+3 : strlen) et tu mets "..." au milieu...

  3. #3
    Membre habitué Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 177
    Points
    177
    Par défaut
    ouai, mais si l'URL est dans un champs texte cela me force à analyser les chaque mot du texte 1 par 1...

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    dans ce cas, fait une fonction qui se charge de faire la transformation, et utilisé l'option e des expressions régulière PCRE : http://fr.php.net/pcre

  5. #5
    Membre habitué Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 177
    Points
    177
    Par défaut
    finalement j'y suis arrivé avec des expression régulières :

    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
     
     
    function stringLimit($string) {
     
        $max_caracteres=80;
     
       if (strlen($string[1])>$max_caracteres)
       {
    	$string[1] = substr($string[1], 0, $max_caracteres);
    	$string[1] .= "...";
        }
        else
    	$string[1]=ereg_replace("\+$","",$string[1]);
     
        return  $string[1];
    }
     
     
    $message = preg_replace ("`( http://[.a-z0-9/\-_%]+)`i"," <a href=\\1 target='_blank'>\\1+</a>", $message); 
    $message = preg_replace_callback ("`( http://[.a-z0-9/\-_%]+)\+`i",'stringLimit', $message);
    je rajoute un + pour bien distinguer l'URL après le a href et cette entre les balises <a href=></a>

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Cette fonction fonctionne pas chez moi, je sais pas pourquoi.
    J'ai essayé en enlevant les [1] (pas pigé à quoi ils servent), c'est pareil.

  7. #7
    Membre habitué Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 177
    Points
    177
    Par défaut
    C'est parce que dans string[0] tu as l'expression regulière trouvée, et dans le 1 la première parathèse capturante...

    et que je ne veux remplacer que celle-ci.

    Si tu essaye d'utiliser cette fonction, il faut bien comprendre qu'elle ne remplace que les URL commençant par http:// ET un espace avant celle-ci, pour faire la distinction avec celle du type [URL=http://...]

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

Discussions similaires

  1. [RegEx] Expression régulière pour supprimer des doublons
    Par cbroissa dans le forum Langage
    Réponses: 5
    Dernier message: 20/05/2017, 01h59
  2. Réponses: 7
    Dernier message: 02/11/2010, 13h36
  3. expression régulière pour splitter des données suivant un masque
    Par LEK dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/04/2007, 07h02
  4. Réponses: 2
    Dernier message: 27/02/2007, 09h16
  5. [RegEx] Expression régulière pour trouver des mots
    Par cbroissa dans le forum Langage
    Réponses: 7
    Dernier message: 26/05/2006, 23h39

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