PHP (PHP Hypertext Preprocessor)

Auteur: Mohamed CHINY Durée necessaire pour le cours de PHP (PHP Hypertext Preprocessor) Niveau recommandé pour le cours de PHP (PHP Hypertext Preprocessor) Supports vidéo non disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz disponible pour ce cours

Page 8: Chaînes de caractères

Toutes les pages

Les chaînes de caractères en PHP

Généralités

Une chaîne de caractères est une suite de caractères dont le nombre maximal n'est pas limité. Elle est toujours délimitée par des simples cotes ou des doubles cotes.

Exemple:
$str1="Bonjour";
$str2='Bonsoir';
Les deux variables $str1 et $str2 sont des chaînes de caractères vues de la même manière par le compilateur PHP. Cependant il y a une nette différence entre les simples cotes et les doubles cotes, surtout quand il s'agit d'évaluer les variables scalaires. En effet, si on place une variable scalaire (nombre ou chaîne de caractères) dans des doubles cotes dans une chaîne de caractères, elle sera évaluée et replacée par sa valeur. Par contre si on la place entre les simples cotes, elle sera imprimée telle qu'elle est.

Exemple:
$str="Bonjour";
echo "$str à tous"; // Affiche: Bonjour à tous
echo '$str à tous'; // Affiche: $str à tous

Concaténation de chaînes de caractères

Pour concaténer les chaînes de caractères on utilise l'opérateur point (.). Cet opérateur permet d'unir deux chaînes de caractères en une seule.

Exemple:
<?php
   $nbr=2.3;
   echo "L'arrondi supérieur de $nbr est ".ceil($nbr);
?>
Ce qui donne:
L'arrondi supérieur de 2.3 est 3
Puisque les variables sont évaluées entre les doubles cotes d'une chaîne de caractères alors il est possible de les y placer directement (cas de la variable $nbr dans cet exemple). Par contre, les fonctions et les variables tableau ne sont pas évaluées dans une chaîne, c'est ce qui m'a emmené à placer la fonction ceil($nbr) en dehors de la chaîne de caractères et la concaténer avec celle ci.

Fonctions agissant sur les chaînes de caractères

PHP dispose d'une panoplie de fonctions qui permettent de manipuler les chaînes de caractères. Elles sont tellement nombreuses qu'il faut des pages et des pages pour toutes les énumérer. Je me contente donc des fonctions les plus fréquentes et les plus utiles. Bien entendu vous pouvez les combiner ou créer vos propres fonctions PHP à partir de celles que nous allons soir pour réussir des traitement plus diversifiés.

Voici la liste des fonctions les plus utiles:
  • strlen($str): retourne un entier qui représente le nombre de caractères que contient la chaîne $str.
  • strtoupper($str): convertir la chaîne $str en majuscule.
  • strtolower($str): convertir la chaîne $str en minuscule.
  • ucfirst($str): convertit le premier caractère de la chaîne $str en majuscules.
  • trim($str): supprime les espaces de début de de fin de la chaîne $str.
  • rtrim($str) ou chop($str): supprime les espaces de fin de la chaîne $str.
  • substr($str,$deb,$nbr): extrait une partie de la chaîne de caractères en commençant de la position $deb et en retournant $nbr caractères (Notez que la position du premier caractère de la chaîne est 0).
  • ord($car): retourne le code ASCII du caractère $car.
  • chr($int): retourne le caractère correspondant au code ASCII $int.
  • addslashes($str): ajoute des antislashs avant les caractères spéciaux comme l'antislash, simple cote ou double cote qui se trouvent dans la chaîne de caractères $str.
  • stripslashes($str): supprime les antislashs qui se trouvent dans la chaîne de caractères $str.
  • strip_tags($str): supprime les balises HTML qui se trouvent dans la chaîne de caractères $str.
  • htmlentities($str): convertit certains caractères de $str en mot clés HTML.
  • md5($str): calcule le MD5 de la chaîne $str. MD5 est une fonction de hachage et signifie Message Digest 5. En cryptographie, le hachage désigne chiffrer sans avoir la possibilité de déchiffrer après. Le résultat de la fonction MD5 contient toujours 32 cratères hexadécimaux (16 octets), quelque soit la longueur de la chaîne $str. Elle est très utile surtout quand on souhaite stocker des données confidentielles comme des mots de passe (dans une base de données ou un fichier par exemple).
  • sha1($str): calcule le SHA1 de la chaîne $str. SHA1 est une fonction de hachage et signifie Secure Hash Algorythm. Elle agit comme la fonction md5() mais son résultat est constitué de 40 caractères (20 octes).
  • str_replace($occ,$rem,$str): retourne une chaîne de caractères où toutes les occurrences définies par $occ sont remplacées une à une par l'entrée respectives définie en $remp au sein de la chaîne de caractères $str.

Exemple:
<?php
   $str="Bonjour";
   echo strlen($str); // Affiche: 7
   echo strtoupper($str); // Affiche: BONJOUR
   echo substr($str,0,3); // Affiche: Bon
   echo htmlentities("<font>"); // Affiche: &lt;font&gt;
   for($i=0;$i<strlen($str);$i++){
      echo substr($str,$i,1)." : ".ord(substr($str,$i,1))."<br />";
   }
   /*
   La dernière boucle affiche:
   B : 66
   o : 111
   n : 110
   j : 106
   o : 111
   u : 117
   r : 114
   */
   echo md5($str); // Affiche: ebc58ab2cb4848d04ec23d83f7ddf985
   echo str_replace(
       array("o","n","u"),
       array("x","y","z"),
       "Bonjour"
       );
   // Affiche: Bxyjxzr
?>

Afficher les chaînes de caractères

Jusqu'ici nous nous sommes servis de la fonction echo pour afficher nos chaînes de caractères. Cependant, echo n'est pas une fonction proprement parlant car elle n'exige pas les parenthèses. Mais c'est le moyen le plus utilisé pour exporter nos chaînes de caractères sur l'écran.

Syntaxe:
<?php
   echo "Bonjour";
?>
<?="Bonjour"?>
Les deux instructions sont identiques. La première affiche "Bonjour" à l'aide de echo dans un script PHP (<?php ?>). Quant-à la deuxième, elle s'agit d'un raccourcis de la fonction echo qui consiste à ouvrir le délimiteur court de PHP (<?) suivi de = suivi de la chaîne à écrire, puis le délimiteur de fermeture du script (?>).

Il existe aussi la structure print qui permet d'afficher un message de la même manière que la structure echo. Notez que print n'est pas une fonction non plus car elle n'exige pas les parenthèses.

Syntaxe:
<?php
   print "Bonjour"; // Affiche: Bonjour
?>

Si vous avez déjà codé en C alors vous êtes certainement habitué à la fonction printf(). Cette fonction existe aussi en PHP. Elle permet d'afficher des chaînes de caractères formatées. Elle est rarement utilisée mais il est toujours utile de savoir qu'elle est prise en charge.

Syntaxe:
<?php
   printf("Salut à %s","tous"); // Affiche: Salut à tous
?>
Quiz (Pour tester vos connaissances)
  1. Si on exécute l'instruction suivante
    addslashes(addslashes("L'action"));
    On obtiendra:
L\'action
L\\'action
L\\\'action
  1. La fonction md5()
permet de chiffrer une chaine de caractère que l'on peut déchiffrer après.
permet de chiffrer une chaine de caractère que l'on peut déchiffrer si on dispose de la clé de chiffrement.
permet de chiffrer une chaine de caractères que l'on peut pas déchirer après.
  1. La fonction trim() n'est pas très utile car personne ne s'amuse à mettre des espaces avant ou après une phrase.
Vrai
Faux
  1. Au sein d'une chaine de caractères délimitée par des doubles quotes, les variables sont évaluées.
Oui
Non
  1. Si on veut capitaliser le prénom d'un utilisateur (stocké dans la variable $prenom) sachant que sa valeur vient d'une zone de texte saisie par l'utilisateur lui même, alors on fait appel à l'instruction suivante:
ucfirst($prenom)
ucfirst(strtolower($prenom))
ucfirst(strtoupper($prenom))