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 :

Savoir si un n° de téléphone est dans une tranche [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de Amélie Ladoque
    Inscrit en
    Novembre 2004
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 251
    Points : 310
    Points
    310
    Par défaut Savoir si un n° de téléphone est dans une tranche
    Bonsoir,
    J'ai une liste de n° spéciaux qu'il me faut classer par tranche.
    Les n° sont au format texte pour avoir le 0 non significatif.
    Exemple des tranches :
    0800 à 0805 pour les gratuits
    0806 à 0809 à tarification banalisée
    0810 à 0899 à tarification majorée
    Comment feriez-vous pour savoir si un n° est dans une tranche ?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    déjà vous pouvez couper la chaine en morceau de 2 caractères avec la fonction http://php.net/chunk_split
    ensuite vous pouvez convertir le 2e morceau en entier pour faire des comparaison numériques : http://php.net/manual/fr/language.ty...es.typecasting

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Sauf erreur, la comparaison de chaînes de caractères (ici 4) fonctionnera aussi.

  4. #4
    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
    Salut,

    une petite gestion avancée avec switch devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (substr($numero, 0, 2) === '08') {
        $end = (int)substr($numero, 2, 2);
        switch (true) {
            case ($end < 6);   $type = 'gratos'; break;
            case ($end < 10);  $type = 'payant'; break;
            case ($end < 100); $type = 'majoré'; break;
        }
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    switch ($v = (int)substr($numero, 0, 4)) {
        case (($v < 800) || ($v > 899)): $type = 'standard'; break;
        case ($v < 806); $type = 'gratos'; break;
        case ($v < 810); $type = 'payant';  break;
        case ($v < 900); $type = 'majoré';  break;
    }

  5. #5
    Invité
    Invité(e)
    Par défaut
    Je persiste et signe :

    Code php : 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
    23
    <?php
    function type_tel($tel)
    {
    	$type		= '';
    	$tel		= preg_replace( '#([^0-9])?#Ui','',$tel); // supprime tout ce qui n est pas numerique (+, espace,...)
    	// ---------
    	switch ($v = mb_substr($tel, 0, 4)) 
    	{
    		case ($v >= '0800' && $v <= '0805'): 
    			$type = 'gratuit';
    			break;
    		case ($v >= '0806' && $v <= '0809'): 
    			$type = 'tarification banalisée';
    			break;
    		case ($v >= '0810' && $v <= '0899'): 
    			$type = 'tarification majorée';
    			break;
    		default:
    			$type = 'standard'; 
    	}
    	// ---------
    	return $type;
    }
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo type_tel($tel); ?>


    Par contre, attention aux escroqueries au "08" :

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

Discussions similaires

  1. savoir si une valeur est dans une table
    Par pedro99 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/06/2008, 09h44
  2. Savoir si un caractère est dans une chaine
    Par flamel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2008, 23h54
  3. Savoir si un objet d'une certaine classe est dans une liste
    Par Denti-fritz dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2007, 09h05
  4. Réponses: 1
    Dernier message: 26/10/2006, 12h02

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