logo oujood
🔍

Fonction strtok() de PHP : Découper une chaîne en segments

Apprenez à utiliser strtok() pour segmenter efficacement vos chaînes de caractères avec des délimiteurs personnalisés

OUJOOD.COM

La fonction strtok() en PHP


PHP references des fonctions PHP

(PHP 4, PHP 5, PHP 7, PHP 8)

strtok() — Découpe une chaîne de caractères en segments (tokens) avec délimiteurs personnalisables

Qu'est-ce que la fonction strtok() ?

Définition et utilisation

La fonction strtok() est un outil puissant de tokenisation qui permet de découper une chaîne de caractères en plusieurs segments plus petits, appelés tokens. Cette fonction est particulièrement utile pour le parsing de données et l'analyse de textes structurés.

La fonction strtok() segmente la chaîne en utilisant un ou plusieurs caractères délimiteurs spécifiés dans le paramètre token. Par exemple, si vous avez une chaîne telle que "Voici un bon exemple", vous pouvez extraire chaque mot individuellement en utilisant l'espace comme délimiteur. Cette approche est idéale pour le traitement de fichiers CSV, l'analyse de logs ou le parsing de données textuelles.

Point important : La fonction strtok() utilise un mécanisme de mémoire interne. Seul le premier appel nécessite les deux arguments (chaîne et délimiteur). Tous les appels suivants ne nécessitent que le paramètre délimiteur, car la fonction conserve en mémoire la position actuelle dans la chaîne. Pour réinitialiser la tokenisation ou traiter une nouvelle chaîne, vous devez fournir à nouveau le paramètre chaîne. Le découpage s'effectue dès qu'un des caractères présents dans le paramètre token est rencontré.

Syntaxe
  string strtok ( string $chaîne, string $token )
  string strtok ( string $token )
Paramètre Description

chaîne

Requis (premier appel uniquement). Spécifie la chaîne de caractères à découper en segments. Ce paramètre n'est nécessaire que lors de l'initialisation de la tokenisation.

token

Requis. Le ou les caractère(s) délimiteur(s) utilisés pour segmenter la chaîne. Vous pouvez spécifier plusieurs délimiteurs (ex: " \n\t" pour espace, nouvelle ligne et tabulation).


Exemples pratiques d'utilisation

Exemple 1 : Découpage avec délimiteurs multiples     📋 Copier le code

  <?php
  // Chaîne avec différents types d'espacement
  $chaineing = "C'est\tun exemple\nstring";
  
  // Initialisation : on utilise espaces, nouvelles lignes et tabulations
  // comme séparateurs de mots
  $tok = strtok($chaineing, " \n\t");
   
  // Boucle pour extraire tous les tokens
  while ($tok !== false) {
      echo "Word=$tok<br />";
      // Appels suivants : seul le délimiteur est nécessaire
      $tok = strtok(" \n\t");
  }
  ?>

Résultat de l'exécution :

  Word=C'est
  Word=un
  Word=exemple
  Word=string

Ce code PHP démontre l'utilisation de strtok() pour extraire les mots d'une chaîne de caractères en utilisant plusieurs délimiteurs simultanés : les espaces, les nouvelles lignes (\n), et les tabulations (\t). Chaque mot est ensuite affiché sur une ligne séparée grâce à la balise HTML <br />.

Explication détaillée du code :

  1. $chaineing : Variable contenant la chaîne source avec des espaces, tabulations (\t) et retours à la ligne (\n) comme séparateurs naturels.
  2. $tok = strtok($chaineing, " \n\t"); : Premier appel d'initialisation à strtok() avec deux paramètres. La liste des délimiteurs " \n\t" indique que tous ces caractères d'espacement seront considérés comme des points de découpage.
  3. while ($tok !== false) : Boucle de traitement qui continue tant que strtok() retourne un token valide. La fonction retourne false lorsqu'il n'y a plus de segments à extraire.
  4. echo "Word=$tok<br />"; : Affichage de chaque token extrait avec un retour à la ligne HTML pour une présentation claire.
  5. $tok = strtok(" \n\t"); : Appels suivants à strtok() avec uniquement le délimiteur. La fonction se souvient automatiquement de la chaîne d'origine et de la position courante.

Cas d'usage pratiques de strtok()

1. Analyse de fichiers CSV simplifiés :

Exemple 2 : Parsing CSV avec strtok()     📋 Copier le code

  <?php
  // Données CSV sur une ligne
  $donnees_csv = "Jean,Dupont,35,Paris";
  
  // Découpage avec la virgule comme délimiteur
  $valeur = strtok($donnees_csv, ",");
  
  while ($valeur !== false) {
      echo "Champ: " . $valeur . "<br>";
      $valeur = strtok(",");
  }
  ?>

2. Extraction de mots d'un texte :

Exemple 3 : Comptage de mots avec strtok()     📋 Copier le code

  <?php
  $texte = "PHP est un langage de programmation puissant et flexible";
  
  // Utiliser espace et ponctuation comme délimiteurs
  $mot = strtok($texte, " .,;!?");
  $compteur = 0;
  
  while ($mot !== false) {
      $compteur++;
      echo "$compteur. $mot<br>";
      $mot = strtok(" .,;!?");
  }
  
  echo "<br>Total de mots: $compteur";
  ?>

Points importants à retenir

  • strtok() modifie en interne un pointeur : utilisez-la avec précaution dans du code multithread
  • La fonction retourne false (et non null) quand il n'y a plus de tokens
  • Pour traiter une nouvelle chaîne, vous devez réinitialiser en passant à nouveau le premier paramètre
  • Les délimiteurs peuvent être une chaîne de plusieurs caractères, chacun étant considéré individuellement
  • Alternative moderne : explode() pour des cas simples avec un seul délimiteur


Par carabde | Publié le 22 août 2014 | Mis à jour le 13 novembre 2025