question sur strlok

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : question sur strlok

Re: question sur strlok

par moogli » 10 mars 2011, 15:42

salut,

je ne comprend pas le sens de la question :)

on passe en délimiteur un ou plusieurs paramètre(s). Dans l'exemple il y en a 3
- les deux points verticaux :
- le tube | (le tube)
- le virgule

strtok prend le 1er qui vient a chaque appel, a priori cette fonction garde en mémoire l'appel précédent et retourne chaque élément indépendamment, quelque soit l'ordre des tokens;
donc au 1er appel strtok trouve les deux points retourne ce qu'il y a avant
au deuxième il trouve le tube et retourne ce qu'il y a entre le tube et le délimiteur précédent (les deux points)
au troisème il trouve la virgule et retourne qu'il y a entre virgule et tube
au quatrième ah ben c'est la fin je retourne la fin juste après le dernier délimiteur trouvé (virgule)
donc le résultat de ton code est bien
J. Gilmore:[email protected]|Columbus, Ohio
Element = J. Gilmore <= 1er appel
Element = [email protected] <= 2ème
Element = Columbus <= 3ème
Element = Ohio <= 4ème
@balistik : parce que la fonction retourne une chaine et pas un tableau, si tu appel une fois, 1er token trouvé, deux fois 2ème etc jusqu’à la fin de la chaine

@+

Re: question sur strlok

par BaLiSTiK » 10 mars 2011, 15:39

D apres la doc, http://php.net/manual/fr/function.strtok.php , la fonction strtok() coupe des qu'elle tombe sur un des caractères présent dans le deuxieme paramèrtes (appelé le token).
Par conter, je ne vois pas encore pourquoi c est appelé une deuxieme fois dans le while #-o

edit : le while permet de parcourir toute la chaine de caractère.

Mais sinon c est quoi le soucis exact :D ?

question sur strlok

par light86 » 10 mars 2011, 14:03

bonjour dans ce code que j'ai trouvé dans un livre

Code : Tout sélectionner

$info = "J. Gilmore:[email protected]|Columbus, Ohio"; // delimiters include colon (:), vertical bar (|), and comma (,) $tokens = ":|,"; $tokenized = strtok($info, $tokens); // print out each element in the $tokenized array while ($tokenized) { echo "Element = $tokenized<br>"; // Don't include the first argument in subsequent calls. $tokenized = strtok($tokens); } ?> This returns the following: Element = J. Gilmore Element = [email protected] Element = Columbus Element = Ohio

j'ai pas compris le délimiteur est toute cette chaine ","
alors pk la fonction ne prend en compte que : ou ou ,
merci