comment couper une chaine - PHP - Programmation
Marsh Posté le 20-02-2006 à 10:32:27
explode() / substr()
Marsh Posté le 20-02-2006 à 10:34:42
Code :
|
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?
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));
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.
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];
Marsh Posté le 20-02-2006 à 12:08:16
Code :
|
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 |
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.
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 ...
Marsh Posté le 20-02-2006 à 14:04:01
http://fr.php.net/manual/fr/ref.strings.php
une methode simple
Code :
|
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
Marsh Posté le 23-02-2006 à 12:41:23
Code :
|
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.
Marsh Posté le 23-02-2006 à 12:47:57
moi je plussoie omega2 il faut utiliser sprintf
Vive le C
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