logo oujood
🔍

Fonction substr_replace() PHP : Remplacer des segments dans une chaîne de caractères

Découvrez comment utiliser substr_replace() pour effectuer des remplacements précis et performants dans vos chaînes de caractères PHP

OUJOOD.COM

Comprendre la fonction substr_replace() en PHP


PHP references des fonctions PHP

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

substr_replace() est une fonction native PHP puissante qui permet de remplacer un segment spécifique dans une chaîne de caractères. Cette fonction est particulièrement utile pour la manipulation avancée de textes, le traitement de données dynamiques et l'optimisation des opérations sur les chaînes.

La fonction substr_replace() : manipulation précise des chaînes PHP

Définition et utilisation de substr_replace()

La fonction substr_replace() remplace une portion délimitée d'une chaîne par une autre chaîne de remplacement. Elle offre un contrôle granulaire sur la position de départ et la longueur du segment à remplacer, ce qui en fait un outil indispensable pour le traitement dynamique de textes en PHP.

Plus précisément, substr_replace() remplace un segment ciblé de la chaîne source par une chaîne de remplacement. Le segment à modifier est déterminé par deux paramètres clés : la position de départ (début) et optionnellement la longueur du segment (longueur). Cette flexibilité permet d'effectuer des insertions, remplacements partiels ou suppressions de caractères avec une seule fonction.

Syntaxe de la fonction substr_replace()
substr_replace(chaîne, remplacement, début, longueur)
Paramètre Description

chaîne

Requis. Spécifie la chaîne de caractères source à traiter. C'est la chaîne dans laquelle le remplacement sera effectué. Peut être une variable contenant du texte, des données utilisateur ou tout contenu textuel.

remplacement

Requis. Spécifie la chaîne de substitution qui remplacera le segment ciblé. Peut être une chaîne vide pour effectuer une suppression, ou contenir n'importe quel contenu textuel pour le remplacement.

début

Requis. Détermine la position de départ du remplacement dans la chaîne source.

Si début est positif : le remplacement commence à la position spécifiée (index basé sur zéro). Par exemple, début=0 commence au premier caractère, début=5 au sixième caractère.

Si début est négatif : le comptage se fait depuis la fin de la chaîne. Par exemple, début=-1 désigne le dernier caractère, début=-5 le cinquième caractère en partant de la fin. Cette fonctionnalité est idéale pour les opérations sur les fins de chaînes sans connaître leur longueur exacte.

longueur

Facultatif. Définit le nombre de caractères à remplacer dans la chaîne source. Par défaut, si omis, tous les caractères depuis la position de début jusqu'à la fin de la chaîne sont remplacés.

  • Si longueur est positive : indique exactement combien de caractères seront remplacés à partir de la position de début. Par exemple, longueur=5 remplace 5 caractères.
  • Si longueur est négative : le remplacement s'arrête au nombre spécifié de caractères avant la fin de la chaîne. Par exemple, longueur=-1 remplace jusqu'à l'avant-dernier caractère.
  • Si longueur vaut 0 : aucun caractère n'est supprimé, la fonction effectue simplement une insertion de la chaîne de remplacement à la position spécifiée sans supprimer de contenu existant.
  • Si longueur est omis : tous les caractères depuis la position de début jusqu'à la fin sont remplacés, équivalent à utiliser strlen($chaîne) - $début.

Note importante : Si le paramètre début est un nombre négatif et que la valeur de longueur est inférieure ou égale à début, la longueur effective devient automatiquement 0. Dans ce cas, la fonction effectue une simple insertion sans remplacement.

Note technique : Cette fonction gère correctement les chaînes binaires (binary-safe), ce qui signifie qu'elle peut traiter des données contenant des octets nuls (caractère \0) sans corruption. Cela la rend appropriée pour manipuler des données binaires encodées en chaînes de caractères.


Exemples pratiques d'utilisation de substr_replace()

Les exemples suivants illustrent les différentes façons d'utiliser substr_replace() pour effectuer des remplacements, insertions et suppressions de segments dans des chaînes PHP. Chaque cas d'usage démontre une technique spécifique applicable dans vos projets de développement web.

Exemple 1 : Opérations de base avec substr_replace()

Cet exemple démontre comment remplacer intégralement une chaîne, insérer du texte, remplacer des segments spécifiques et supprimer des portions de texte. Ces opérations sont couramment utilisées dans le traitement de formulaires, la manipulation de contenu dynamique et le formatage de données.

  📋 Copier le code

<?php
// Initialisation d'une chaîne de test contenant différents segments
$var = 'ABCDEFGH:/MNRPQR/';
echo "Original : $var<hr>\n";
// Remplacement complet : remplace toute la chaîne par 'bob'
// Paramètres : chaîne source, remplacement, début à 0 (premier caractère)
// Sans paramètre longueur, remplace jusqu'à la fin
echo substr_replace($var, 'bob', 0) . "<br>\n";
// Résultat : bob
// Alternative équivalente avec longueur explicite
// strlen($var) retourne la longueur totale de la chaîne
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br>\n";
// Résultat : bob
// Insertion au début sans suppression : longueur = 0
// La chaîne 'bob' est insérée avant le premier caractère
// Aucun caractère n'est supprimé grâce à longueur=0
echo substr_replace($var, 'bob', 0, 0) . "<br>\n";
// Résultat : bobABCDEFGH:/MNRPQR/
// Remplacement d'un segment central avec position positive
// Commence à la position 10, remplace jusqu'à l'avant-dernier caractère
// longueur=-1 signifie "jusqu'à 1 caractère avant la fin"
echo substr_replace($var, 'bob', 10, -1) . "<br>\n";
// Résultat : ABCDEFGH:/bob/
// Remplacement avec position de début négative
// -7 commence 7 caractères avant la fin
// Remplace jusqu'à l'avant-dernier caractère (longueur=-1)
echo substr_replace($var, 'bob', -7, -1) . "<br>\n";
// Résultat : ABCDEFGH:/bob/
// Suppression d'un segment : remplacement par chaîne vide
// Efface les caractères de la position 10 jusqu'à l'avant-dernier
echo substr_replace($var, '', 10, -1) . "<br>\n";
// Résultat : ABCDEFGH://
?>

Ce code PHP illustre les techniques fondamentales de manipulation de chaînes avec substr_replace(). Chaque opération démontre un cas d'usage différent :

  1. Remplacement total : La première instruction remplace l'intégralité de la chaîne source par 'bob' en commençant à la position 0 sans spécifier de longueur. La deuxième instruction produit le même résultat mais utilise explicitement strlen($var) pour définir la longueur du remplacement.
  2. Insertion pure : En définissant la longueur à 0, la fonction insère 'bob' au début de la chaîne sans supprimer aucun caractère existant, démontrant ainsi le mode insertion de substr_replace().
  3. Remplacement de segment avec index positif : L'instruction commence à la position 10 (le caractère 'M') et remplace jusqu'à l'avant-dernier caractère (longueur=-1), substituant ainsi 'MNRPQR' par 'bob'.
  4. Utilisation d'index négatifs : La position de début -7 compte depuis la fin de la chaîne, offrant une méthode flexible pour cibler des segments sans calculer leur position absolue.
  5. Suppression de segment : En utilisant une chaîne vide comme remplacement, on supprime efficacement les caractères ciblés, technique utile pour le nettoyage et la sanitisation de données.

Exemple 2 : Masquage de données sensibles avec substr_replace()

Voici un exemple pratique montrant comment masquer partiellement des informations sensibles comme des numéros de carte bancaire ou des identifiants, technique couramment utilisée pour la protection de données personnelles et la conformité RGPD.

  📋 Copier le code

<?php
// Exemple : masquage d'un numéro de carte bancaire pour la sécurité
// Seuls les 4 derniers chiffres restent visibles
$numero_carte = "1234567812345678";
// Remplace les 12 premiers caractères par des astérisques
// Paramètres : début=0, longueur=12 (12 premiers chiffres masqués)
$carte_masquee = substr_replace($numero_carte, '************', 0, 12);
echo "Numéro de carte sécurisé : $carte_masquee<br>\n";
// Résultat : ************5678
// Exemple : masquage partiel d'une adresse email
$email = "utilisateur@exemple.com";
// Trouve la position du @ pour déterminer la partie à masquer
$position_arobase = strpos($email, '@');
// Masque tous les caractères sauf les 3 premiers du nom d'utilisateur
$email_masque = substr_replace($email, str_repeat('*', $position_arobase - 3), 3, $position_arobase - 3);
echo "Email protégé : $email_masque<br>\n";
// Résultat : uti*********@exemple.com
?>

Cet exemple démontre une application réelle de substr_replace() pour la sécurité des données. Le masquage partiel des informations sensibles permet d'afficher des données reconnaissables par l'utilisateur tout en protégeant leur confidentialité. Cette technique est essentielle dans les interfaces d'administration, les systèmes de paiement et toute application traitant des données personnelles.

Exemple 3 : Formatage dynamique de texte avec substr_replace()

Cet exemple illustre comment utiliser substr_replace() pour formater automatiquement des chaînes, comme l'ajout de séparateurs dans des numéros de téléphone ou des codes postaux.

  📋 Copier le code

<?php
// Formatage d'un numéro de téléphone sans espaces
$telephone = "0612345678";
// Insertion d'espaces pour améliorer la lisibilité
// Premier espace après les 2 premiers chiffres (longueur=0 pour insertion)
$telephone = substr_replace($telephone, ' ', 2, 0);
// Deuxième espace après les 5 caractères suivants (position décalée de 1)
$telephone = substr_replace($telephone, ' ', 5, 0);
// Troisième espace après les 3 caractères suivants
$telephone = substr_replace($telephone, ' ', 8, 0);
// Quatrième espace après les 2 caractères suivants
$telephone = substr_replace($telephone, ' ', 11, 0);
echo "Numéro formaté : $telephone<br>\n";
// Résultat : 06 12 34 56 78
// Exemple : insertion de tirets dans un code ISBN
$isbn = "9782123456789";
// Format ISBN standard avec tirets : 978-2-12-345678-9
$isbn_formate = substr_replace($isbn, '-', 3, 0);
$isbn_formate = substr_replace($isbn_formate, '-', 5, 0);
$isbn_formate = substr_replace($isbn_formate, '-', 8, 0);
$isbn_formate = substr_replace($isbn_formate, '-', 15, 0);
echo "ISBN formaté : $isbn_formate<br>\n";
// Résultat : 978-2-12-345678-9
?>

Ce code démontre comment substr_replace() peut transformer des chaînes brutes en formats structurés et lisibles. L'utilisation de longueur=0 permet d'insérer des caractères de séparation sans supprimer le contenu existant, idéal pour le formatage automatique de données utilisateur, la présentation d'identifiants et l'amélioration de l'expérience utilisateur.



Par carabde | Mis à jour le 30 novembre 2025