Le tailleur
trim() coupe les fils qui dépassent (les espaces au début et à la fin), strtoupper() met tout en majuscules comme sur une étiquette, substr() découpe un morceau du tissu.
Mesurer, nettoyer, découper, chercher et remplacer dans un texte (avec les accents), formater des nombres, puis afficher, calculer et comparer des dates avec date(), strtotime() et DateTime.
Un client tape « amina.BENALI@Mail.ma » avec des espaces et des majuscules ; un produit doit afficher un résumé de 60 caractères ; une commande indique « livrée dans 3 jours ». Le texte et les dates sont partout sur un site : PHP fournit des fonctions toutes prêtes pour les manipuler.
La chaîne $p = "Savon noir" : chaque caractère a une position, à partir de 0.
| Fonction | Rôle | Exemple → résultat |
|---|---|---|
strlen($s) / mb_strlen($s) | longueur (octets / caractères) | mb_strlen("Fès") → 3 |
strtoupper / mb_strtoupper | majuscules | mb_strtoupper("fès") → FÈS |
strtolower | minuscules | "SAFI" → safi |
ucfirst / ucwords | majuscule au début / à chaque mot | ucwords("nadia amrani") → Nadia Amrani |
trim($s) | enlève espaces au début et à la fin | " Fès " → Fès |
str_pad | complète à une longueur | str_pad("7", 3, "0", STR_PAD_LEFT) → 007 |
$tel = "06 12-34 56 78";
echo str_replace([" ", "-"], "", $tel); // 0612345678
$desc = "Tajine en terre cuite décoré à la main";
echo mb_substr($desc, 0, 20) . "…"; // Tajine en terre cuit…
var_dump(str_contains($desc, "terre")); // bool(true)
var_dump(strpos($desc, "Tajine")); // int(0)
$villes = explode(",", "Fès,Safi,Agadir"); // ["Fès", "Safi", "Agadir"]
echo count($villes); // 3
echo implode(" · ", $villes); // Fès · Safi · Agadir
Pour mettre en forme des nombres : number_format(1200.5, 2, ',', ' ') donne 1 200,50, et sprintf("%05d", 42) donne 00042.
| Lettre | Signification | Exemple |
|---|---|---|
d | jour sur 2 chiffres | 03 |
m | mois sur 2 chiffres | 02 |
Y | année sur 4 chiffres | 2025 |
H / i / s | heure / minutes / secondes | 14:05:09 |
N | jour de la semaine (1 = lundi) | 1 |
t | nombre de jours du mois | 28 |
echo date('d/m/Y H:i'); // 03/02/2025 14:05
echo date('d/m/Y', strtotime('+3 days')); // dans 3 jours
echo date('d/m/Y', strtotime('2024-02-03')); // 03/02/2024
Le fuseau horaire se règle dans php.ini (date.timezone = Africa/Casablanca) ou avec date_default_timezone_set('Africa/Casablanca');.
$naissance = new DateTime('2001-11-20');
$aujourdhui = new DateTime('today');
$ecart = $naissance->diff($aujourdhui);
echo "Âge : {$ecart->y} ans";
$echeance = new DateTime('2025-01-31');
$echeance->modify('+1 month');
echo $echeance->format('d/m/Y'); // 03/03/2025 (31 février n'existe pas !)
trim() coupe les fils qui dépassent (les espaces au début et à la fin), strtoupper() met tout en majuscules comme sur une étiquette, substr() découpe un morceau du tissu.
La commande part aujourd'hui ; la livraison prend 3 jours. Plutôt que de compter sur ses doigts (et de se tromper en fin de mois), on demande à PHP : date('d/m/Y', strtotime('+3 days')).
La page s'affichera ici.
Le navigateur demandera /index.php au serveur, qui exécutera le PHP et renverra du HTML.
Consignes 0 / 5
À partir de $client = « nadia amrani », affichez « Nadia Amrani » puis les initiales « N.A. ».
<?php $client = "nadia amrani"; echo ucwords($client), "<br>"; // Nadia Amrani $parties = explode(" ", $client); $initiales = ""; foreach ($parties as $p) { $initiales .= strtoupper($p[0]) . "."; } echo $initiales; // N.A.
Calculez l'âge d'un client né le 2001-11-20 et le nombre de jours depuis son inscription le 2025-01-12, avec DateTime et diff().
<?php $aujourdhui = new DateTime('today'); $age = (new DateTime('2001-11-20'))->diff($aujourdhui)->y; $jours = (new DateTime('2025-01-12'))->diff($aujourdhui)->days; echo "Âge : $age ans, client depuis $jours jours";
Fabriquez une référence du type « CMD-2025-00042 » à partir de l'année en cours et du numéro 42.
<?php $numero = 42; $ref = sprintf("CMD-%s-%05d", date('Y'), $numero); echo $ref; // CMD-2025-00042 (avec l'année en cours)