Gouketsu Posté(e) le 9 janvier 2012 Partager Posté(e) le 9 janvier 2012 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 More sharing options...
treflemard Posté(e) le 9 janvier 2012 Partager Posté(e) le 9 janvier 2012 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 More sharing options...
foetus Posté(e) le 9 janvier 2012 Partager Posté(e) le 9 janvier 2012 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: Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gouketsu Posté(e) le 9 janvier 2012 Auteur Partager Posté(e) le 9 janvier 2012 Je commence à me faire à l'idée que c'est impossible sans toucher à la source, donc je crois que je vais simplement devoir supprimer les espaces un par un. Mais merci quand même pour avoir chercher ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xaelias Posté(e) le 9 janvier 2012 Partager Posté(e) le 9 janvier 2012 Ta source est vraiment de la forme 12 1 452 32 ? Comment tu sais que c'est un 1452 alors ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gouketsu Posté(e) le 10 janvier 2012 Auteur Partager Posté(e) le 10 janvier 2012 Cela provient d'une tableau, donc j'ai les colonnes qui me permettent de savoir que c'est 1452. Mais une fois copier coller ce n'est plus si évident, c'est pour ça que je crois que c'est tout simplement pas possible. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xaelias Posté(e) le 10 janvier 2012 Partager Posté(e) le 10 janvier 2012 Alors copie/colle différemment. Tu dois pouvoir avec notepadd++ par exemple créer une mise en page. Lui il saura probablement détecter la différence de colonne. Sinon tu peux essayer de passer par un tableur entre deux. Lien vers le commentaire Partager sur d’autres sites More sharing options...
treflemard Posté(e) le 13 janvier 2012 Partager Posté(e) le 13 janvier 2012 Sinon ton tableau il est en quel format ?? html ? csv ?? pas possible d'ouvrir le fichier avec fopen de php ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.