Diviser une chaîne à l'aide de la fonction strtok() en PHP

王林
Libérer: 2023-06-27 09:08:03
original
1144 Les gens l'ont consulté

En programmation PHP, le traitement des chaînes est une fonction fréquemment utilisée. L'une des fonctions de manipulation de chaînes les plus couramment utilisées est strtok(). La fonction strtok() peut diviser une chaîne en plusieurs sous-chaînes en spécifiant le délimiteur. Dans cet article, nous présenterons les connaissances et l'utilisation pertinentes de la fonction strtok().

1. Utilisation de base de la fonction strtok()

La fonction strtok() contient deux paramètres. Le premier paramètre est la chaîne à diviser et le deuxième paramètre est le délimiteur spécifié. La valeur de retour de la fonction est la sous-chaîne actuellement divisée.

Exemple de code :

$str = "Hello, World! How are you today?";
$delimiter = " ,!";

$token = strtok($str, $delimiter);

while ($token !== false) {
    echo "$token<br>";
    $token = strtok($delimiter);
}
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la fonction strtok() pour diviser la chaîne $str en plusieurs sous-chaînes en utilisant des virgules, des espaces et des points d'exclamation comme délimiteurs. Le résultat de l'exécution est le suivant :

Hello
World
How
are
you
today?
Copier après la connexion

Dans le code ci-dessus, nous utilisons une boucle while. Chaque boucle utilise la fonction strtok() pour obtenir une sous-chaîne $token, puis la générer. La fonction renvoie false pour indiquer qu'il n'y a plus de sous-chaînes.

2. Analyse détaillée de la fonction strtok()

La définition complète de la fonction strtok() est :

string strtok ( string $str, string $delimiter )
Copier après la connexion

Parmi elles :

  • $str : la chaîne à diviser.
  • $delimiter : délimiteur spécifié.

valeur de retour de la fonction strtok() :

  • Lorsque elle est appelée pour la première fois, renvoie la première sous-chaîne non délimitatrice dans $str.
  • Lors des appels suivants, renvoyez la sous-chaîne non délimitée restante.
  • Renvoie false s'il n'y a plus de sous-chaînes non délimitées.

Lors de l'appel de la fonction strtok(), PHP parcourra la chaîne $str de gauche à droite et la coupera selon le délimiteur $delimiter. Chaque fois que la fonction est appelée, une sous-chaîne sera renvoyée et le pointeur interne reculera automatiquement pour pointer vers le début de la sous-chaîne suivante. Cela signifie que chaque fois que la fonction est appelée, une nouvelle sous-chaîne sera renvoyée.

Mais il convient de noter que pour obtenir tous les délimiteurs, vous devez appeler la fonction strtok() à plusieurs reprises jusqu'à ce que false soit renvoyé.

Exemple de code :

$str = "this,is,a,comma,separated,string";
$delimiter = ",";

$token = strtok($str, $delimiter);

while ($token !== false) {
    echo "$token<br>";
    $token = strtok($delimiter);
}
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la fonction strtok() pour diviser la chaîne $str en plusieurs sous-chaînes en utilisant des virgules comme séparateur. Le résultat de l'exécution est le suivant :

this
is
a
comma
separated
string
Copier après la connexion

Dans cet exemple, nous définissons le séparateur sur virgule. Lorsque la fonction strtok() est appelée pour la première fois, elle renvoie la première sous-chaîne « this » dans la chaîne que nous voulons diviser. Ensuite, nous appelons la fonction strtok() à plusieurs reprises, renvoyant une nouvelle sous-chaîne à chaque fois jusqu'à ce que false soit renvoyé.

3. Notes sur la fonction strtok()

  1. Sauvegarder la chaîne d'origine

Lorsque nous utilisons la fonction strtok() pour diviser une chaîne, la fonction modifiera la chaîne d'origine. Si vous devez utiliser la chaîne d'origine dans des programmes ultérieurs, vous devez d'abord la sauvegarder.

Exemple de code :

$str = "first,second,third";
$delimiter = ",";
$original_str = $str;

$token = strtok($str, $delimiter);

while ($token !== false) {
    echo "$token<br>";
    $token = strtok($delimiter);
}

echo $original_str;
Copier après la connexion
  1. Le délimiteur ne peut être qu'un seul caractère

Il est à noter que le paramètre $delimiter ne peut être qu'un seul caractère, sinon il sera traité comme chaque caractère en attente d'être passé.

Exemple de code :

$str = "one,two,three";
$delimiter = ",e";

$token = strtok($str, $delimiter);

while ($token !== false) {
    echo "$token<br>";
    $token = strtok($delimiter);
}
Copier après la connexion

L'effet attendu de ce code est de séparer la chaîne par une virgule et la lettre e, mais en fait la fonction n'utilise pas la lettre e comme séparateur, elle traite le caractère "e" comme un wait Separator, c'est-à-dire que deux caractères adjacents doivent être des séparateurs pour une utilisation normale.

  1. L'impact de l'ordre des paramètres

Dans la fonction strtok(), le premier paramètre $str spécifie la chaîne à diviser et le deuxième paramètre est le délimiteur spécifié. L'ordre de ces deux paramètres ne peut pas être inversé. Si l’ordre de ces deux paramètres est inversé, une erreur sera signalée.

Exemple de code :

$str = "one,two,three";
$delimiter = ",";

// 错误方式
$token = strtok($delimiter, $str);

while ($token !== false) {
    echo "$token<br>";
    $token = strtok($delimiter);
}
Copier après la connexion

IV. Résumé

Dans la programmation PHP, il existe de nombreux scénarios dans lesquels des opérations sur les chaînes sont utilisées. La fonction strtok() est une fonction de fractionnement de chaîne très pratique qui peut diviser une chaîne en plusieurs sous-chaînes selon le délimiteur spécifié.

Lorsque vous utilisez la fonction strtok(), faites attention au type de valeur de retour de la fonction, à la sauvegarde de la chaîne d'origine, au séparateur ne peut être qu'un seul caractère et à l'impact de l'ordre des paramètres. Une utilisation appropriée de la fonction strtok() peut nous aider à traiter les chaînes plus efficacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal