Stringtokenizer - implémentation de la classe java en php

Contenu du snippet

Idéal pour écrire un parseur, permet de parcourir un texte "token par token".
Je rappelle qu'un "token" est une "unité de texte".

[Exemple]
$tok = new StringTokenizer("salut c'est moi toto !");
while($tok->hasNext()) {
echo "[".$tok->next()."]";
}

affichera: [salut][c'est][moi][toto][][]

Source / Exemple :


class StringTokenizer
{
  /* private */ var $tokens;
  /* private */ var $string;
  /* private */ var $separators = " \t\r\n~{}[]()-|_/\!:;.,?";
  /* private */ var $hasNext;

  /* public */ function StringTokenizer($string = "")
  {
    $this->setString($string);
  }

  /* public */ function setSeparators($new_separators)
  {
    $this->separators = $new_separators;
    $this->setString($this->string);
  }

  /* public */ function getSeparators()
  {
    return $this->separators;
  }

  /* public */ function setString($string)
  {
    // on remplace tous les séparateurs par \0
    // puis on explose selon \0
    $separators = $this->separators;
    for ($i=0; $i<strlen($separators); $string = str_replace($separators[$i++], "\0", $string));
    $this->string = $string;
    $this->tokens = explode("\0", $string);
    $this->reset();
  }

  /* public */ function getString()
  {
    return $this->string;
  }

  /* public */ function reset()
  {
    reset($this->tokens);
    $this->hasNext = sizeof($this->tokens)>0;
  }

  /* public */ function hasNext()
  {
    return $this->hasNext;
  }

  /* public */ function next()
  {
    $cur = current($this->tokens);
    $this->hasNext = (FALSE!==next($this->tokens));
    return $cur;
  }

}

Conclusion :


Une documentation au format HTML verra bientot le jour (aidé par AutoPhpDoc).

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.