Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2011, 14h23   #1
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 107
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 107
Points : 17
Points : 17
Par défaut Une ecriture plus simple ?

J'ai une chaine de 15 chiffres (N° sécu) qui je voudrait mêttre sous cette forme:
1 23 45 56 234 1345 _ 45

Voilà ce que je trouvé:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
   $nir = 1234556234134545
   if (preg_match_all('#[0-9]#',$nir,$matches))
   {
       echo $matches[0][0].' '
       .$matches[0][1].$matches[0][2].' '
       .$matches[0][3].$matches[0][4].' '
       .$matches[0][5].$matches[0][6].' '
       .$matches[0][7].$matches[0][8].$matches[0][9].' '
       .$matches[0][10].$matches[0][11].$matches[0][12].' _ '
       .$matches[0][13].$matches[0][14];
   };
 
    // Retourne: 1 23 45 56 234 1345 _ 45
 
?>

Une écriture plus simple est-elle possible ?
krislec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 14h29   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
humm ...

Code :
echo vsprintf('%s %s%s %s%s %s%s %s%s%s %s%s%s%s _ %s%s', str_split('1234556234134545'));
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 10/10/2011, 14h45   #3
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
pas mieux que stealth35

Par contre pour vérifier ta variable, je te déconseille preg_match_all pour un test aussi simple :

Tu as :
Code :
1
2
3
4
5
6
<?php 
$nir = 1234556234134545;
if (ctype_digit("$nir")) { 
   echo vsprintf('%s %s%s %s%s %s%s %s%s%s %s%s%s%s _ %s%s', str_split($nir));
}
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 15h01   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par rawsrc Voir le message
pas mieux que stealth35

Par contre pour vérifier ta variable, je te déconseille preg_match_all pour un test aussi simple :

Tu as :
Code :
1
2
3
4
5
6
<?php 
$nir = 1234556234134545;
if (ctype_digit("$nir")) { 
   echo sprintf('%s %s%s %s%s %s%s %s%s%s %s%s%s%s _ %s%s', str_split($nir));
}
?>
ca ne marchera pas puisque il va être convertie en float, donc la chaine sera 1.2345562341345E+15 et le ctype ne marchera pas non plus puisque c'est un float

ps : c'est vsprintf
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 15h06   #5
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Bah vi,
J'ai retapé, ça m'apprendera la prochaine fois, je ferai du copier-coller.
J'utilise tellement plus sprintf que vsprintf que mes doigts tapent tout seuls sur le clavier :ane:
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 16h54   #6
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 107
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 107
Points : 17
Points : 17
Ouaaaaa ! Quelle clarté ! Le code est plus propre et plus compréhensible.

La variable est récupérée de la table mysl (je n'ai donc pas... en théorie) besoin de la retester... Le "preg_match" étant utilisé pour arriver à mes fins !

Et ce procédé marche aussi avec les lettres ?
si maintenant j'avais :

$var = 'lavoituredepaul'
et que je veuille :
'LaVoitureDePaul' ?

(Bon d'accord ca rime à rien mais c'est histoire d'exercice...)

Super grand Merci.
krislec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 17h01   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par krislec Voir le message
$var = 'lavoituredepaul'
et que je veuille :
'LaVoitureDePaul' ?

(Bon d'accord ca rime à rien mais c'est histoire d'exercice...)
la c'est plus compliquer, il faut va falloir séparer les mots, mais le critère de séparation est beaucoup trop grand, donc énormément de code pour pas grand chose
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 17h11   #8
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 107
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 107
Points : 17
Points : 17
Ok.

Juste pour faire le plaisantin... y-avais un %s de trop
Code :
1
2
echo sprintf('%s %s%s %s%s %s%s %s%s%s %s%s%s%s _ %s%s', str_split($nir));
...Au moins ça prouve que j'ai testé le code...

SUPERRRRR grand MERCI
krislec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 17h23   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
dans ton exemple c'est 4 chiffres a la fin
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 18h01   #10
Futur Membre du Club
 
Inscription : octobre 2006
Messages : 107
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 107
Points : 17
Points : 17
Effetivement... c'est moi que "je ma trompé" !!!
Désolé.

krislec est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h32.


 
 
 
 
Partenaires

Hébergement Web