Retourner ttes les positions d'une occurence? [PHP] - Programmation
Marsh Posté le 24-07-2002 à 12:26:35
j'ai essayé ça:
Code :
|
euh... ça à l'air de me faire une boucle infinie... où est mon erreur?
Marsh Posté le 24-07-2002 à 12:37:23
$chaine = "test blablablatest blablabla test blablabla";
$seek= "test";
$i = 0;
$start = 0;
$long_max = strlen($chaine);
$lg_seek= strlen($seek);
do
{
$positions[$i] = strpos($chaine, $seek, $start);
$start = $positions[$i]+1;
}
while($position[$i++]==false);
la boucle ne doit s'arrêter que s'il ne trouve plus d'occurence : strpos retourne false.
ici ça va te trouver l'occurence 2x si tu as comme chaine "testest".
si tu ne veux le trouver qu'une fois, mets
$start = $positions[$i]+$lg_seek+1;
Marsh Posté le 24-07-2002 à 12:41:50
ouais c'est bon merci!!
Mais je venais de trouver une autre solution, en cherchant la DERNIERE occurence avec strrpos et en faisant la boucle à partir de ça:
Code :
|
Marsh Posté le 24-07-2002 à 12:49:10
ça pourrait poser problème si il n'y a pas d'occurence dans la chaine non ?
$long_max = FALSE -[longueur_chaine]+2;
que vaut $long_max pour ta condition d'arrêt ??
délicat tout ça... et pas très catholique.
même si je suis presque sûr que cela ne devrais pas poser de problèmes à l'exécution.
Marsh Posté le 24-07-2002 à 13:53:52
Très bien mais...
ton code ne samble pas fonctionner!
En sortie, j'ai
Code :
|
...
il manque donc la dernière occurence
Marsh Posté le 24-07-2002 à 13:56:41
ouais le script semble s'interrompre au bout de 2 occurences trouvées.
Marsh Posté le 24-07-2002 à 15:06:38
je capte pas du tout là
surtout que si après la boucle je met un test qui regarde si postions[$i]==false, il me dit que non...
Marsh Posté le 24-07-2002 à 15:36:08
ouep........
Mais y aurait pas un autre moyen? Parce que ça me parrait bien compliqué tout ça!?
Marsh Posté le 24-07-2002 à 11:41:43
Comment est-ce que je peux faire pour retourner toutes les positions numériques de l'occurence "xxx" d'une variable?![:??: :??:](https://forum-images.hardware.fr/icones/confused.gif)
J'ai trouvé strpos mais ça ne me renvoie que la position de la première...
Message édité par Toto21 le 24-07-2002 à 11:42:02