Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2841 connectés 

  FORUM HardWare.fr
  Programmation

  [PHP] Retourner ttes les positions d'une occurence?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Retourner ttes les positions d'une occurence?

n°181451
Toto21
Posté le 24-07-2002 à 11:41:43  profilanswer
 

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...  :??:


Message édité par Toto21 le 24-07-2002 à 11:42:02
mood
Publicité
Posté le 24-07-2002 à 11:41:43  profilanswer
 

n°181503
Toto21
Posté le 24-07-2002 à 12:26:35  profilanswer
 

j'ai essayé ça:

Code :
  1. $chaine = "test blablablatest blablabla test blablabla";
  2. $i = 0;
  3. $start = 0;
  4. $long_max = strlen($chaine);
  5. do
  6. {
  7. $positions[$i] = strpos($chaine, "test", $start);
  8. $start = $positions[$i]+1;
  9. $i++;
  10. }
  11. while($start<$long_max);


euh... ça à l'air de me faire une boucle infinie... où est mon erreur?  :??:

n°181526
ethernal
Chercheur de vérité...
Posté le 24-07-2002 à 12:37:23  profilanswer
 

$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;


Message édité par ethernal le 24-07-2002 à 12:42:53

---------------
...oups kernel error...
n°181535
Toto21
Posté le 24-07-2002 à 12:41:50  profilanswer
 

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 :
  1. $mot = "test";
  2. $long = strlen($mot);
  3. $chaine = " test blablablatest blablabla test blablabla";
  4. $i = 0;
  5. $start = 0;
  6. $long_max = strrpos($chaine, $mot)-$long+2;
  7. echo $long_max;
  8. do
  9. {
  10. $positions[$i] = strpos($chaine, $mot, $start);
  11. $start = $positions[$i]+1;
  12. $i++;
  13. }
  14. while($start<$long_max);

n°181548
ethernal
Chercheur de vérité...
Posté le 24-07-2002 à 12:49:10  profilanswer
 

ç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.


---------------
...oups kernel error...
n°181586
Toto21
Posté le 24-07-2002 à 13:53:52  profilanswer
 

Très bien mais...
ton code ne samble pas fonctionner!
En sortie, j'ai

Code :
  1. Array ( [0] => 0 [1] => 14 )

...
il manque donc la dernière occurence


Message édité par Toto21 le 24-07-2002 à 13:57:12
n°181589
Toto21
Posté le 24-07-2002 à 13:56:41  profilanswer
 

ouais le script semble s'interrompre au bout de 2 occurences trouvées.
 :??:


Message édité par Toto21 le 24-07-2002 à 13:56:56
n°181690
ethernal
Chercheur de vérité...
Posté le 24-07-2002 à 15:06:38  profilanswer
 

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...


---------------
...oups kernel error...
n°181736
Toto21
Posté le 24-07-2002 à 15:36:08  profilanswer
 

ouep........
Mais y aurait pas un autre moyen? Parce que ça me parrait bien compliqué tout ça!?

n°181974
Toto21
Posté le 24-07-2002 à 18:23:23  profilanswer
 

:sweat:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [PHP] Retourner ttes les positions d'une occurence?

 

Sujets relatifs
[ PHP ] - intercepter la fin du telechargement d'un fichierJe cale en PHP : afficher un message d'erreur
[PHP/MySQL] Retourner les valeurs ajoutées dans une tableEquivalent PHP de l'objet ASP Application + fonction flock()
[PHP] Passage de paramètres ?[PHP] Expressions régulières je comprend rien!!! ;-)
[ PHP ] - parseur de mail[PHP/MySQL] Supprimer les entrées en double?
[PHP] Comment qu on fait ???? 
Plus de sujets relatifs à : [PHP] Retourner ttes les positions d'une occurence?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR