Comment manipuler du texte en PHP avec ces 9 fonctions

Les chaînes sont l'un des types scalaires fondamentaux dans de nombreux langages de programmation, y compris PHP. Ils représentent des données textuelles, des caractères individuels aux documents entiers.

La programmation de chaînes la plus simple implique du texte à un octet, qui peut représenter 256 caractères différents. ASCII est le codage le plus courant. Le langage PHP de base a de nombreuses fonctions utiles pour manipuler de telles chaînes.

Comment afficher le contenu d'une chaîne

Si vous avez fait de la programmation en PHP, vous avez probablement rencontré un écho , mais vous ne réalisez peut-être pas que ce n'est en fait pas du tout une fonction. En fait, echo est une construction de langage, donc même si vous l'utilisez plus que n'importe quelle fonction de chaîne réelle, vous ne pouvez pas toujours l'utiliser à la place d'une fonction.

Vous l'utiliserez presque toujours comme ceci:

 echo "Hello, world";

Mais vous pouvez en fait l'appeler comme une fonction:

 echo("Hello, world");

Bien que cela y ressemble, ce n'est toujours pas un appel de fonction. Par exemple, vous ne pouvez pas affecter sa valeur de retour à une variable:

 $a = echo("Hello, world");
Parse error: syntax error, unexpected 'echo' (T_ECHO)

Une autre façon de générer la valeur d'une chaîne consiste à utiliser print. Encore une fois, ce n'est pas vraiment une vraie fonction, bien qu'elle soit plus proche de un que de l'écho. Comme echo, vous pouvez l'appeler sans parenthèses:

 print "Hello, world";

Mais, contrairement à echo, il renvoie une valeur que vous pouvez attribuer, bien que cette valeur soit toujours 1:

 $a = print("Hello, world");
echo $a; // 1

1. Sortie d'une chaîne à l'aide d'une fonction réelle

La fonction printf est en fait une fonction réelle. Comme echo et print , il génère des chaînes, mais il a un comportement unique qui reflète la même fonction du langage c:

 $username = "John";
$length = printf("Hello, %s", $username); // "Hello, John"
echo $length; // 11

Le premier argument est toujours une chaîne, entre guillemets. Mais printf effectuera divers remplacements sur des séquences de caractères spéciaux à l'intérieur de la chaîne. Ces séquences commencent par un symbole de pourcentage, comme celui ci-dessus, % s . Dans ce cas précis,% s représente une chaîne et printf la remplace par l'argument suivant, qui est la valeur de $ username .

La fonction printf renvoie une valeur utile, la longueur de la chaîne formatée. Cela peut être utile pour le code qui ne peut pas connaître la longueur à l'avance, lors du passage de variables à printf , par exemple. Vous pouvez utiliser cette valeur de retour pour déterminer la quantité d'espace physique que la chaîne occupera sur une ligne de commande.

2. Obtention de la longueur d'une chaîne

En parlant de longueur de chaîne, la méthode standard pour déterminer la longueur d'une chaîne est la fonction strlen . Cette fonction est très simple: elle prend un seul argument de chaîne et renvoie le nombre d'octets sous forme d'entier. Comme mentionné précédemment, pour le texte ASCII , le nombre d'octets est le même que le nombre de caractères:

 $length = strlen("Hello, World");
echo $length; // 12

3. Extraction d'une partie d'une chaîne

Une tâche très courante, lorsqu'il s'agit de chaînes, est l'extraction d'une partie de cette chaîne. Il existe plusieurs façons de procéder, et la première présentée ici spécifie la position et la longueur de la sous-chaîne requise. La fonction substr extrait une partie fixe d'une chaîne en fonction de ces paramètres.

 $greeting = substr("Hello, World", 0, 5);
echo $greeting; // "Hello"

Notez que, comme dans la plupart des langages de programmation, PHP compte les décalages de chaîne à partir de 0. PHP diffère de certains langages en ce que le deuxième paramètre de cette fonction est la longueur de la chaîne résultante.

En relation: Les langages de programmation les pires et les plus difficiles

Une autre différence est que PHP prend en charge les valeurs négatives pour le décalage et la longueur. Si offset est négatif, le résultat commencera à compter à partir de la fin de la chaîne, pas du début:

 $greeting = substr("Hello, World", -5, 5);
echo $greeting; // "World"

Si la longueur est négative, elle fera référence au nombre de caractères supprimés, plutôt qu'au nombre inclus:

 $greeting = substr("Hello, World", 0, -6);
echo $greeting; // "Hello,"

4. Recherche dans une chaîne

Une partie importante du traitement de texte consiste à trouver l'emplacement d'une chaîne dans une autre. En PHP, vous pouvez y parvenir avec la fonction strpos :

 $pos = strpos("Hello, World", ",");
echo $pos; // 5

Vous pouvez utiliser strpos en conjonction avec substr pour fournir une méthode plus générale pour extraire une partie d'une chaîne:

 $string = "Hello, World";
$pos = strpos($string, ",");
$first_part = substr($string, 0, $pos);
echo $first_part; // "Hello"

5. Conversion de la casse d'une chaîne

Les chaînes ASCII traditionnelles ont des variantes majuscules et minuscules bien définies. La version majuscule de a est A. La minuscule de Z est z. Les fonctions strtoupper et strtolower effectuent ces conversions. Ils le font pour chaque caractère d'une chaîne ASCII:

 $original = "hello, WORLD";
$upper = strtoupper($original);
$lower = strtolower($original);
echo "$lower $upper"; // "hello, world HELLO, WORLD"

6. Élimination des espaces blancs

Parfois, vous vous retrouverez avec une chaîne contenant des espaces au début ou à la fin: espaces, tabulations ou caractères de nouvelle ligne. Ceci est souvent indésirable, mais la coupe peut le supprimer:

 $trimmed = trim(" Hello, World ");
echo $trimmed; // "Hello, World"

7. Rompre une chaîne par un séparateur

La fonction d' explosion semble dangereuse mais ne vous inquiétez pas, elle ne cause aucun dommage durable! Au lieu de cela, il convertit une chaîne en un tableau de chaînes, séparées par une autre chaîne – souvent un caractère. Cela peut être utile si vous souhaitez diviser une phrase en mots séparés, par exemple.

 $sentence = "The quick brown fox jumps over the lazy dog";
$words = explode(" ", $sentence);

La variable $ words est maintenant un tableau contenant des mots individuels:

 [ "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog" ]

8. Diviser une chaîne en sous-chaînes de longueur fixe

Comme exploser, les pauses de la fonction str_split une chaîne de caractères dans un tableau de chaînes plus petites. Contrairement à exploser, les chaînes finales ne sont pas déterminées par leur contenu, mais par leur longueur.

 $parts = str_split("Hello, World", 6);

Le tableau $ parts contient maintenant deux sous-chaînes de six caractères chacune:

 [ "Hello,", " World" ]

9. Rechercher et remplacer dans une chaîne

Vous pouvez effectuer une simple opération de recherche et de remplacement sur une chaîne à l'aide de str_replace . Il faut trois arguments: une chaîne à rechercher, une chaîne de remplacement et une chaîne d'origine à rechercher. La fonction renvoie la nouvelle chaîne:

 $result = str_replace("o", "OO", "Hello, World");
echo $result; // "HellOO, WOOrld"

PHP fournit de nombreuses façons utiles de travailler avec du texte

Puisque PHP est souvent utilisé dans le développement Web, le traitement du texte est une tâche courante.

Les fonctions présentées ici sont parmi les plus utiles pour traiter du texte en PHP. Il existe une centaine de fonctions de gestion des chaînes intégrées dans le langage lui-même.

N'oubliez pas que les fonctions présentées ici sont destinées à être utilisées avec des chaînes ASCII et non avec des chaînes Unicode. PHP prend également en charge Unicode et d'autres schémas d'encodage de caractères multi-octets, avec un ensemble séparé de fonctions .