ouep........
Mais y aurait pas un autre moyen? Parce que ça me parrait bien compliqué tout ça!?
ethernal
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...
Toto21
ouais le script semble s'interrompre au bout de 2 occurences trouvées.
:??:
Toto21
Très bien mais...
ton code ne samble pas fonctionner!
En sortie, j'ai
Code :
Array ( [0] => 0 [1] => 14 )
...
il manque donc la dernière occurence
ethernal
ç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.
Toto21
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 :
$mot = "test";
$long = strlen($mot);
$chaine = " test blablablatest blablabla test blablabla";
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;
Toto21
j'ai essayé ça:
Code :
$chaine = "test blablablatest blablabla test blablabla";
$i = 0;
$start = 0;
$long_max = strlen($chaine);
do
{
$positions[$i] = strpos($chaine, "test", $start);
$start = $positions[$i]+1;
$i++;
}
while($start<$long_max);
euh... ça à l'air de me faire une boucle infinie... où est mon erreur? :??:
Toto21
Comment est-ce que je peux faire pour retourner toutes les positions numériques de l'occurence "xxx" d'une variable?
J'ai trouvé strpos mais ça ne me renvoie que la position de la première... :??: