Remplacer des espaces en php et des caractères spéciaux

Remplacer des espaces en php et des caractères spéciaux

php
Niveau intermédiaire
5 1 vote
Évaluation de l'article

Dans ce court tutoriel, nous allons explorer la puissance de la fonction PHP str_replace.

str_replace vous permet de rechercher et de remplacer des chaînes de caractères dans un contenu. Dans cet article, nous allons découvrir deux cas d’utilisation courants : la création d’ID à partir de titres pour la création de liens encrés, et la modification de l’apparence des adresses e-mail en remplaçant le symbole “@” par “[at]”.

Ceci pourra vous être utile pour vos thèmes WordPress.

Je vous expliquerai ces deux cas de figure dans cet article.

Remplacer des espaces en php avec str_replace()

Comment ça fonctionne ?

La fonction str_replace a la syntaxe suivante :

str_replace($recherche, $remplacement, $chaine)

Explications :

  • $recherche : représente la sous-chaîne que vous souhaitez rechercher dans la chaîne principale.
  • $remplacement : est ce qui va remplacer les éléments souhaités.
  • $chaine : correspond à la chaîne principale dans laquelle les remplacements seront effectués.

La fonction str_replace() va parcourir ma chaine principale et va remplacer toutes les occurrences de $recherche et les remplacer par $remplacement.

Voici un exemple simple :

$texte = "email@email.fr";
$nouveauTexte = str_replace("@", "[at]", $texte);
echo $nouveauTexte;

Le code me retournera

email[at]email.fr

Remplacements multiples avec str_replace()

Il est possible de passer plusieurs arguments dans la fonction str_replace() en utilisant des tableaux :

$texte = "La voiture est noire, le camion est jaune, et la moto est rouge.";
$recherche = array("voiture", "camion", "moto");
$remplacement = array("camionette", "bateau", "bicyclette");
$nouveauTexte = str_replace($recherche, $remplacement, $texte);
echo $nouveauTexte;

Ce qui donnera

La camionette est noire, le bateau est jaune, et la moto bicyclette rouge.

Vous pouvez également utiliser str_replace() pour remplacer des caractères ou des balises HTML.

Remplacer des espaces en php et des caractères spéciaux

Vous pouvez effectuer des remplacements spécifiques en utilisant str_replace().
Par exemple, pour remplacer les espaces par des tirets, utilisez :

 $str = str_replace(' ', '-', $str); // Supprimer les espaces et les remplacer par un tiret

Pour retirer les caractères spéciaux et les accents, vous pouvez utiliser une expression régulière :

 $str = preg_replace('/[^A-Za-z0-9\-]/', '', $str); // Retirer les caractères spéciaux et les accents

Voici un exemple concret :

function inu_suppression_caracteres($str) {
    $str = str_replace(' ', '-', $str); // Supprimer les espaces et les remplacer par un tiret
    $str = preg_replace('/[^A-Za-z0-9\-]/', '', $str); // Retirer les caractères spéciaux et les accents
    return $str;
}
$texte = "Il a mangé au restaurant à Paris";
$texteSansAccents = inu_suppression_caracteres($texte);
echo $texteSansAccents; // Résultat : Il-a-mange-au-restaurant-a-Paris

Poussons plus loin et ajoutons une condition pour ressortir notre chaine en minuscules

echo strtolower($texteSansAccents);

Le résultat sera donc :

il-a-mange-au-restaurant-a-paris

Cela peut être utile pour générer des slugs ou des identifiants uniques.

Soigner votre code et optimiser l’utilisation de str_replace() dans vos projets PHP

Sécuriser vos données

Si vos données proviennent de sources externes, protégez-vous d’injection de code.
Pour cela, utilisez htmlspecialchars() pour échapper les caractères spéciaux en HTML.

Voici notre code avec htmlspecialchars

function inu_suppression_caracteres($str) {
    $str = str_replace(' ', '-', $str); // Supprimer les espaces et les remplacer par un tiret
    $str = preg_replace('/[^A-Za-z0-9\-]/', '', $str); // Retirer les caractères spéciaux et les accents
    $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); // Échapper les caractères spéciaux
    return $str;
}
  • On retrouve la fonction pour remplacer les espaces par des tirets, retirer les accents
  • Ensuite, nous utilisons htmlspecialchars pour échapper les caractères spéciaux dans $string. L’option ENT_QUOTES assure l’échappement des guillemets doubles et simples, et ‘UTF-8’ spécifie l’encodage des caractères.
  • Enfin, nous retournons la chaîne modifiée.

Commenter vos codes

Pensez que quelqu’un modifiera peut-être votre code un jour, ou vous ouvrirez votre code et vous devrez vous souvenir du rôle de la fonction utilisée.

Conclusion

En résumé, la fonction str_replace offre une grande flexibilité pour effectuer des remplacements de chaînes de caractères en PHP. En combinant les bonnes pratiques et les mesures de sécurité, vous pouvez exploiter pleinement cette fonctionnalité pour manipuler et modifier vos contenus de manière efficace et sécurisée.

Vous souhaitez un développeur front-end ?

Intégrez vos designs dans vos pages web