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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    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
    Membre confirmé
    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
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    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 confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    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.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 10/11/2018, 22h19
  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, 01h22
  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, 13h09
  4. Intervale de Nombres
    Par Jonpool dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/09/2008, 13h56
  5. [Struts]Select rempli avec un intervalle de nombre
    Par worldchampion57 dans le forum Struts 1
    Réponses: 1
    Dernier message: 13/04/2006, 11h21

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