comment couper une chaine

comment couper une chaine - PHP - Programmation

Marsh Posté le 20-02-2006 à 10:30:07    

bonjour,
Voila j'ai une chaine de caractere qui ne changera jamais de forme por-001-002
et je voudrais pouvoir en retirer le chiffre 001 avai vous une idée car je debute en php merci d'avance

Reply

Marsh Posté le 20-02-2006 à 10:30:07   

Reply

Marsh Posté le 20-02-2006 à 10:32:27    

explode() / substr()


Message édité par skeye le 20-02-2006 à 10:33:16

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-02-2006 à 10:34:42    

Code :
  1. echo explode('-',substr($chaine,4,3));


---------------
Viendez sur le Newbie-Project et essayez le Newbie-Directory (nouveau)
Reply

Marsh Posté le 20-02-2006 à 10:43:16    

j'ai bien essayé de mettre echo explode('-',substr($quartier_client,4,3));  
mais le probleme est qu'il me ressort array au lieu de 001 ????
savais vous pouquoi?


Message édité par ma_mat44 le 20-02-2006 à 11:23:35
Reply

Marsh Posté le 20-02-2006 à 11:26:10    

voila mon code:
 
$queryic=mysql_query("select * from clients where id_client=$id_c" );
    $aff_ic=mysql_fetch_array($queryic);
    $quartier_client=$aff_ic[q_client];
 echo explode('-',substr($quartier_client,4,3));

Reply

Marsh Posté le 20-02-2006 à 11:28:22    

lis la doc des fonctions qu'on t'a données au lieu de recopier bêtement la réponse de MS-DOS_1991, qui est fausse.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-02-2006 à 11:37:59    

oui oui j'ai vu que ca retournai un tableau j'ai trouvé l'erreur
mais maintenant le probleme est qu'il me ressort bien 001 mais quand je veu l'incrementer il me marque 2 et non 002 et la je voi pas lui dire de me resortir les troi chiffre
 
$numero = explode('-',substr($quartier_client,4,3));  
 $numero[0]=$numero[0] +001;
 echo $numero[0];

Message cité 1 fois
Message édité par ma_mat44 le 20-02-2006 à 11:38:34
Reply

Marsh Posté le 20-02-2006 à 12:08:16    

Code :
  1. $montableau = explode($machaine, '-');
  2. echo $montableau[0] . $montableau[2];
  3. //pour voir le contenu du tableau
  4. print_r($montableau);


---------------
MZP est de retour
Reply

Marsh Posté le 20-02-2006 à 12:10:52    

ma_mat44 a écrit :

oui oui j'ai vu que ca retournai un tableau j'ai trouvé l'erreur
mais maintenant le probleme est qu'il me ressort bien 001 mais quand je veu l'incrementer il me marque 2 et non 002 et la je voi pas lui dire de me resortir les troi chiffre
 
$numero = explode('-',substr($quartier_client,4,3));  
 $numero[0]=$numero[0] +001;
 echo $numero[0];


Euh, ca me parait tout à fait normal. Tu as d'un coté une chaine de caractere '001'. De l'autre tu veux l'incrementer. Déjà PHP est sympa lorsque tu lui fais un +1, il caste automatiquement le '001' en numerique. Mais tu ne verras jamais un nombre représenté en 002 de maniere numerique.
 
A toi de reformater ce nombre. Et là, la doc PHP est faite pour ca.


---------------
MZP est de retour
Reply

Marsh Posté le 20-02-2006 à 12:37:21    

j'ai essayé de mettre un mask en faisant ainsi mais ca ne marche pas
monMask = new Mask("0###", $numero[0]);
 echo monMask;
 
quelqu'un peu mexpliqué le fonctionnement car je patauge et je ne trouve meme pas dans le bouquin pour les nuls ...

Reply

Marsh Posté le 20-02-2006 à 12:37:21   

Reply

Marsh Posté le 20-02-2006 à 14:04:01    

http://fr.php.net/manual/fr/ref.strings.php
 
une methode simple  
 
 

Code :
  1. echo substr('000', 3-strlen($monchiffre)) . $monchiffre;


 
un part du principe que ton nombre ne depasse pas trois chiffre et qu'il doit toujours faire 3 caracteres. Tu pars d'une chaine de '000' où tu retire autant de caractere qu'il y en a dans ton nombre. Puis tu ajoutes ton nombre.
 
1 devient 00[0] . 1 => 001
99 devient 0[00] . 99 =>099


---------------
MZP est de retour
Reply

Marsh Posté le 23-02-2006 à 12:41:23    

Code :
  1. echo sprintf("%03d",$numero[0] +001);

Sprintf retourne une "chaine formaté".
Le % indique qu'on va remplacer les caractéres suivant (% compris) par le contenu de la prochaine variable.
"%d" indiquerait qu'on va remplacer ces deux caractéres par le contenu de la prochaine variable en la considérant comme un nombre entié.
"%03d" indique qu'on va remplacer ces 4 caractéres par un nombre entié en rajoutant sufisament de caractére "0" devant pour obtenir une chaine d'au moins 3 caractéres.
 
C'est me semble t'il plus propre que le coup du "substr" et c'est surtout conçu pour ce genre de cas. Par contre, je suis incapable de dire lequel serait le plus rapide.

Reply

Marsh Posté le 23-02-2006 à 12:47:57    

moi je plussoie omega2 il faut utiliser sprintf :o
Vive le C :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed