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 :

Intervalle de nombres [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 33
    Points
    33
    Par défaut Intervalle de nombres
    Bonjour à tous,

    Je souhaite faire une regex qui remplace tout ce qui n'est pas dans un intervalle de 0 à 99.
    J'ai essayé ça mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace("#^([0-9][0-9])#", '', $str)
    Pouvez-vous me dire ce qui cloche ?

    Merci.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Le ^ en début de regex qui demande de ne faire la recherche que sur le début de la chaine
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 33
    Points
    33
    Par défaut
    Merci pour ta réponse Bovino.

    J'ai testé sans le ^ et le résultat est le même, la chaîne ne change pas.

    J'ai des chaînes du type xxx xx xxxx xx-yy où y est le chiffre ou nombre entre 0 et 99.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2011
    Messages : 16
    Points : 32
    Points
    32
    Par défaut
    Si j'ai bien compris ce que tu souhaites, essaies ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $str = "145 13 4567 78-56";
    $str = preg_replace("#([0-9]{3,})#", '', $str);
    echo $str;

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 33
    Points
    33
    Par défaut
    Merci Fabien.

    En fait la seule chose qui ne change pas dans mes chaînes ce sont les derniers caractères qui peuvent être de la forme -y ou -yy où les y sont toujours des chiffres. Le tiret est également toujours présent.
    Avant ce sont des phrases, donc des lettres et des espaces.
    Par exemple :

    Pierre est gentil-1
    Paul regarde par la fenêtre-23

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    il vaut mieux procéder autrement : il est plus simple d'extraire le dernier ou les deux derniers chiffres de ta chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $a = 'Paul regarde par la fenêtre-23';
    preg_match('/\d{1,2}$/', $a, $matches);
    if ( ! empty($matches)) {
        $n = $matches[0]; // $n = 23
    }

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 33
    Points
    33
    Par défaut
    En fait ça semble fonctionner comme ça tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace("#[\D]#", '', $str)
    De cette manière je ne conserve que les chiffres de la chaîne.

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tout dépend de ce que tu vises.
    Si tu veux être aboslument sûr et certain de ne conserver que le dernier ou les deux derniers chiffres, ton pattern n'est pas bon dans la mesure où si ta chaîne contient d'autres chiffres en plein milieu tu vas aussi les récupérer...
    A toi de voir si tu sauras retomber sur tes pattes.

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tu peux enfin faire autrement sans utiliser les regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $a = 'Paul regarde par la fenêtre-23';
    $n = abs(substr($a, -2)); // $n = 23
     
    $a = 'Paul regarde par la fenêtre-3';
    $n = abs(substr($a, -2)); // $n = 3

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    @rawsrc : ben justement, \D est "équivalent" à ^\d à priori
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Bovino Voir le message
    @rawsrc : ben justement, \D est "équivalent" à ^\d à priori
    bah oui, mais tu sais l'habitude de fuir les majuscules c'est tenace.
    je corrige.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 33
    Points
    33
    Par défaut
    En effet, je suis certain que mes chaînes ne contiendront que des lettres et espaces (avant le tiret et le(s) chiffre(s)).

    En tout cas merci pour votre aide !

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 10/11/2018, 21h19
  2. Méthodologie de calcul d'intervalles de nombres
    Par tete-jaune dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 26/09/2013, 00h22
  3. [RegEx] Intervalle de nombre dans une expression régulière.
    Par Gwendoline31 dans le forum Langage
    Réponses: 8
    Dernier message: 01/06/2011, 12h09
  4. Intervale de Nombres
    Par Jonpool dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/09/2008, 12h56
  5. [Struts]Select rempli avec un intervalle de nombre
    Par worldchampion57 dans le forum Struts 1
    Réponses: 1
    Dernier message: 13/04/2006, 10h21

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