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 :

Supprimer les caractères en fin de chaine ? [Fait] [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut Supprimer les caractères en fin de chaine ?
    Bonjour,

    Je n'arrive pas à trouver la regex pour supprimer tous les
    caractères se trouvant après le dernier slashe.

    par exemple pour:
    http://localhost/site/repertoire/fichier.php

    obtenir:
    http://localhost/site/repertoire/

    En fait je voudrais une regex qui cherche à partir de la fin
    de la chaine et supprime tous les caractères tant qu'elle
    ne trouve pas un slashe ou quelque chose dans le genre.

    Quelqu'un pourrait m'aider ?

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    Hello,

    Si tu utilises strrpos et substr tu vas pouvoir te débrouiller.

    A+

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    La fonction 'dirname' fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php  
      echo dirname('http://localhost/site/repertoire/fichier.php');
    ?>
    affiche :

  4. #4
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    La fonction 'dirname' fait cela
    Excellent! Je connaissais pas cette fonction.

    Sinon juste pour information, avec les regex
    je suis arrivé à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $location = "http://localhost/site/repertoire/fichier.php";
     
    $part = preg_replace("#.+/(.+)$#", '$1', $location);
     
    echo $part;
    qui affiche bien la partie de la chaine que je veux supprimer (fichier.php)
    mais je voudrais savoir:

    - Est ce que cette regex est correcte pour l'usage que je veux en faire ?
    - Comment faire pour modifier ce qui se trouve dans la variable $1 ?

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par tintin72 Voir le message
    - Est ce que cette regex est correcte pour l'usage que je veux en faire ?
    Non, mais tu y es presque
    Il faudrait plutôt utiliser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    echo preg_replace('~(.+/)(?:[^/]*)~', '$1', 'http://localhost/site/repertoire/fichier.php');

  6. #6
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Merci beaucoup pour ton aide.
    Effectivement ça marche !
    Mais pourrais-tu me commenter cette regex
    parce que je n'arrive vraiment pas à la comprendre ?
    (Je débute avec les expressions régulières, désolé )

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Est-ce que tu as lu ce tuto ? http://g-rossolini.developpez.com/tu...ns-regulieres/

    (.+/) : De 1 à n caractères suivis d'un slash. Mémoriser la sélection pour utilisation ultérieure.
    (?:[^/]*) : N'importe quel nombre de caractères autres que le slash. Ne pas mémoriser la sélection.

  8. #8
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Non, mais j'en ai lu d'autres.

    C'est surtout le ?: qui me déroutais, je ne comprenais pas ce que ça
    voulait dire.
    Mais les choses commence à s'éclaircir maintenant

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    De fait, dans ton cas on peut aussi écrire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    echo preg_replace('~(.+/)[^/]*~', '$1', 'http://localhost/site/repertoire/fichier.php');

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

Discussions similaires

  1. Supprimer les caractéres spéciaux d'une chaine
    Par hugoclo dans le forum VB.NET
    Réponses: 15
    Dernier message: 23/12/2010, 08h29
  2. Supprimer les espaces en fin de chaine
    Par mich44 dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/01/2008, 22h41
  3. Supprimer les caractères blancs en fin de ligne
    Par st20085 dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 06/09/2006, 22h51
  4. Supprimer les espaces en fin de chaine.
    Par KneXtasY dans le forum C
    Réponses: 5
    Dernier message: 26/12/2005, 10h33
  5. [Jsp] Supprimer les caractère spéciaux d'une chaine
    Par PeteMitchell dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/05/2004, 11h11

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