Bonjour,
Voilà, je rencontre un problème dans l'implémentation d'un algorithme capable d'extraire des éléments de taille variable dans une chaîne de caractères. Plus concrétement, je dispose d'une chaîne de caractère de ce type :
$str = "1,5,158,200,21,335,55,2,15578,125,1255,584568,88,1568,7,0";
Je souhaiterai donc extraire ici seulement les nombres, la virgule étant un délimiteur.
J'ai essayé d'imaginer un programme pouvant faire ça.
On récupère la position de chaque virgule qu'on range dans un tableau.
Puis on sectionne la chaîne de caractère entre chaque position.
J'ai fait un petit programme qui ferait l'affaire (tout dépend de notre satisfaction ?)
$str = "1,5,158,200,21,335,55,2,15578,125,1255,584568,88,1568,7,0";
$position = array();
$i=0; // marqueur de position
$j=0; // marqueur pour le tableau
while ($i <= strlen($str)){
$char = substr($str, $i, 1);
if ($char == ","){
$position[$j]=$i;
$j++;
}
$i++;
}
// $position possède maintenant les positions de chacune des virgules
$part = array();
$part[0]=substr($str,0,$position[0]);
$n = count($position);
echo "Test<br />";
echo $part[0]."<br />";
for ($k=1;$k<$n;$k++){
$part[$k]=substr($str,$position[$k-1]+1,$position[$k]-1-$position[$k-1]);
echo $part[$k]."<br />";
}
$part[$n]=substr($str,$position[$n-1]+1, strlen($str));
echo $part[$n];
Alors j'ai testé le code, ça marche, mais le trouve assez lourd, non ? Est-ce qu'il y aurait un moyen plus simple et plus efficace de faire la même tâche ?
Merci d'avance :)
Cdt.
Salut,
si j'ai bien compris,
tu peux utiliser explode()
<?php
$str = "1,5,158,200,21,335,55,2,15578,125,1255,584568,88,1568,7,0";
$numbers = explode(",", $str);
echo '<pre>';
print_r($numbers);
echo '</pre>';
?>
Tiens c'est étrange,
tu dis que le code fonctionne ?
j'aurai pensé qu'il fallait mettre un <
à la place de <=
ici :
while ($i <= strlen($str)){
Merci pour votre réponse, merci beaucoup :D
Oui le code fonctionne vous pouvez le tester sur phptester.net