Aller au contenu

[PHP] Petit challenge


Gouketsu

Messages recommandés

Bonjour,

Je suis en face d'une véritable colle. Je simplifie ici :

J'ai des informations sous la forme : "Nom de la ligne : chiffre1 chiffre2 chiffre3". Par exemple "Truc : 520 845 21"

Je le met dans un tableau comme suis :

$tableau[0] = "Truc :";

$tableau[1] = "520";

$tableau[2] = "845";

$tableau[3] = "21";

Donc hormis la valeur de tableau[0], les autres sont les nombres que l'ont me donne.

Mais voici le problème. Quand j’insère dans mon tableau avec un while, je fait qu'a partir du premier chiffre qu'il rencontre, dès qu'il rencontre un espace il va dans la case suivante, ce qui me donne le tableau ci-dessus.

Et voici mon problème. Les donnée que je rencontre sont parfois supérieur à 999, et sont avec des espaces. Par exemple ; "Truc : 12 1 452 32"

C'est a dire 3 nombres : 12, 1 452, 32.

La manière que j'utilise fait que mon tableau fera une case de plus, c'est à dire :

$tableau[0] = "Truc :";

$tableau[1] = "12";

$tableau[2] = "1";

$tableau[3] = "452";

$tableau[4] = "32";

Ce qui ne correspond pas à ce que je souhaite, à savoir 12, 1 452 et 32. Donc mon problème est : comme faire pour que mon code reconnaisse qu'il s'agit d'un même nombre supérieur à mille, au lieu de le scinder en deux?

Lien vers le commentaire
Partager sur d’autres sites

Salut,

tu peux supprimer l'espace des milliers via les reg ex voir ici : http://www.siteduzero.com/tutoriel-3-14608-les-expressions-regulieres-partie-1-2.html

petit code que j'ai adapté, qui devrait marcher (je ne l'ai pas testé je l'ai légèrement modifié)

pour transformer 1 452 en 1452

<?php$Chiffres="1 452";$Chiffres=preg_replace('#([0-9]{1,3}) ([0-9]{3})#', '$1$2',$Chiffres); echo $Chiffres;?>

le code ne marche que pour les nombre entre 0 et 999 999. il te faut un délimiteur (, ou autre mais pas un espace) entre 2 nombres

Lien vers le commentaire
Partager sur d’autres sites

Sans séparateur autre que l'espace c'est assez difficile, voire impossible à faire.

Un bout d'algo:

1) Tu sépares tout avec les espaces

2) Tu comptes le nombre d'entrées que tu as eu: si c'est supérieur à 3, il y a un problème.

3) Et là cela devient tendu. Comment tu fais la distinction entre "6 1254 8532" et "6 1254233 101" (<- sans les espaces des milliers) qui te donne 5 nombres: :transpi::dd:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...