Se connecter / S'enregistrer
Votre question

[RESOLU] [PHP] Extraction spéciale dans une chaine de caracteres

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
4 Février 2007 17:52:42

Bonjour.

J'ai des chaine de caracteres genre :

"12:38:12"
"6:12:7"
"2:0:5"

enfin, en regle générale : "X:Y:Z" ou X, Y et Z peuvent representer des nombres à 1 ou 2 chiffres.

Ce que je voudrais faire :
extraire justement X, Y et Z séparément !
Et je trouve que c'est compliqué car substr($chaine, 0, 2) extraira tantot deux chiffre, tantot un seul chiffre avec deux points...

donc si vous avez une idée. merci

Autres pages sur : resolu php extraction speciale chaine caracteres

4 Février 2007 20:39:17

Bonsoir,
je ne suis pas vraiment calé en php, mais je pense que ce que tu cherches, c'est la fonction explode.
Ca donnerai un truc du genre:

$resultat=explode(":",$chaine)
$resultat est un array.
Si par exemple, tu as $chaine="XX:Y:ZZ",
alors:
$resultat[0]="XX"
$resultat[1]="Y"
$resulta[2]="ZZ"

Pour plus d'infos, tu peux aller voir par la

Bonne soirée :) 
a c 145 L Programmation
4 Février 2007 21:30:13

ou si tu veux forcer le type de chaine, une regexp:
  1. preg_match('!(\d{1,2}):(\d{1,2}):(\d{1,2})!', $chaine, $vals);
Contenus similaires
4 Février 2007 22:27:16

Opte plutot pour la solution du explode() php car au moins, tu comprendra ce que tu fais :)  (et ça sera moins lourd à gérer pour si peu...)
a c 145 L Programmation
5 Février 2007 09:24:17

ça dépend... le explode() permet d'extraire les différentes parties de la chaine, le preg_match() permet en plus de vérifier que la chaine ressemble bien à ce qu'elle doit être et pas xx:yy
5 Février 2007 12:52:53

Vi pour une vérification c même sur. Après c'est à lui de décider selon qu'il veuille vérifier le format ou non...
6 Février 2007 00:12:20

Merci de vos idées... Bon finalement, j'avais cherché tout seul, et j'ai trouvé ca... Je poste ma solution (qui toutefois me semble mal habile) mais qui MARCHE néanmoins. J'edite le post en RESOLU, si ca peut servir a quelqu'un plus tard.
Merci encore a+

AVOIR X
#####################
$x=$machaine{0};
if($machaine{1} != ':'){
$x=$x.$machaine{1};
}
#####################

AVOIR Y
#####################
$z=$machaine{strlen($machaine)-1};
if($machaine{strlen($machaine)-2} != ':'){
$z=$machaine{strlen($machaine)-2}.$z;
}
#####################

AVOIR Z
#####################
if(strlen($x)==2){
$y=$machaine{3};
if($machaine{4} != ':'){
$y=$y.$machaine{4};
}
}
if(strlen($x)==1){
$y=$machaine{2};
if($machaine{3} != ':'){
$y=$y.$machaine{3};
}
}
#####################
a c 145 L Programmation
6 Février 2007 12:01:22

je confirme, c'est malhabile et très peu optimisé.
Par contre, tu t'es bien amusé sur le parse de chaines au moins :) 
6 Février 2007 14:46:53

OUha ultra lourd le truc !
Bon si ça marche... Quand même, t'aurais plus vite fai avec un explode... mais bon...
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS