Cours par Webcam

Cours par Webcam

Formateur Web pour adultes depuis plus 11 ans, je vous propose des COURS collectifs par WEBCAM en LIVE pour booster vos connaissances et être autonome dans la création de site.

En savoir plus

PHP - Bases

PHP - Algorithmie

PHP - Chaîne

PHP - Tableau

PHP - Formulaires

PHP - Fonctions Usuelles

Données entres pages

Environnement et Interaction

PHP objet (POO)

Facebook
Twitter
LinkedIn

Remplacement dans une chaîne en PHP

PHP possède des fonctions utiles pour procéder à des remplacements de caractères ou de sous-chaînes.

Remplacer des caractères dans une chaîne

La fonction strtr() permet de remplacer dans une chaîne, certains caractères par d’autres caractères.

<?php
$chaine = "daniel";
echo strtr($chaine, "ail", "oy"); // 'a' sera remplacé par 'o', 'i' par 'y', 'l' sera ignoré
?>

Affichage

donyel

Note : si le deuxième et troisième paramètre sont de tailles différentes, les caractères en trop dans l’un ou l’autre seront ignorés.

Problème avec les accents

La fonction strtr() travaille directement sur les octets donc le remplacement des accents peut poser problème avec UTF-8. Cela vient du fait que les caractères ne sont pas encodés forcément sur 8 bits. La solution consiste donc à decoder l’utf-8 en iso-8859-1, avec la fonction utf8_decode().

<?php
$chaine = "accent-äåö";
echo strtr($chaine, "äåö", "aao")."<br>"; // sans conversion
echo strtr(utf8_decode("accent-äåö"), utf8_decode("äåö"), utf8_decode("aao"));
?>

Affichage

accent-oao�o�
accent-aao

La fonction strtr() peut aussi travailler avec des sous-chaines et non pas sur les octets. Il peut remplacer des sous-chaînes de la chaînes par d’autres sous-chaînes. Dans ce cas, il faut fournir un tableau associatif comme deuxième paramètre de la fonction strtr() où les clés correspondent aux sous-chaînes à remplacer et les valeurs étant les sous-chaînes de remplacement.

<?php
$chaine = "XHTML et CSS2";
$tab = array("XHTML"=>"HTML5","CSS2"=>"CSS3");
echo strtr($chaine,$tab);
?>

Affichage

HTML5 et CSS3

Remplacer un motif dans une chaîne

La fonction str_replace() permet de remplacer un motif dans une chaîne. Il faut indiquer la sous-chaîne à rechercher, puis la sous-chaîne de remplacement et enfin la chaîne de référence où faire le remplacement.

<?php
$recherche = "daniel"; // la sous-chaîne recherchée
$remplacement = "david"; // la sous-chaîne de remplacement
$chaine = "daniel dort!"; // chaîne de référence
echo str_replace($recherche,$remplacement,$chaine);
?>

Affichage

david dort!

La fonction str_replace() est sensible à la casse, utiliser str_ireplace() pour faire une recherche insensible à la casse.

<?php
$recherche = "daniel"; // la sous-chaîne recherchée
$remplacement = "david"; // la sous-chaîne de remplacement
$chaine = "DAniel dort!"; // chaîne de référence
echo str_ireplace($recherche,$remplacement,$chaine);
?>

Affichage

david dort!

Si vous fournissez un tableau comme paramètre de recherche, il sera considérer comme une liste de chaînes à remplacer.

<?php
$tab = array("é","è","ê"); // tableau de valeurs à rechercher
$remplacement = "e"; // la valeur de remplacement
$chaine = "les accents : é è ê!"; // chaîne de référence
echo str_replace($tab,$remplacement,$chaine);
?>

Affichage

les accents : e e e!

Si vous fournissez aussi un tableau comme paramètre de remplacement, chaque élément du tableau de recherche sera remplacé par l’élément correspondant du tableau de remplacement.

<?php
$tab = array("XHTML","CSS2"); // tableau de valeurs à rechercher
$remplacement = array("HTML5","CSS3"); // tableau de valeurs de remplacement
$chaine = "On m'enseigne le XHTML et le CSS2"; // chaîne de référence
echo str_replace($tab,$remplacement,$chaine);
?>

Affichage

On m'enseigne le HTML5 et le CSS3

Vous pouvez aussi compter le nombre de remplacement dans une variable passée en quatrième paramètre de la fonction str_replace().

<?php
$tab = array("XHTML","CSS2"); // tableau de valeurs à rechercher
$remplacement = array("HTML5","CSS3"); // tableau de valeurs de remplacement
$chaine = "On m'enseigne le XHTML et le CSS2"; // chaîne de référence
echo str_replace($tab,$remplacement,$chaine,$nb); // $nb récupère le nombre de remplacement
echo "<br>Nombre de remplacement : ".$nb;
?>

Affichage

On m'enseigne le HTML5 et le CSS3
Nombre de remplacement : 2

Remplacer un motif dans une chaîne à partir d’une position

Vous pouvez effectuer un remplacement à partir d’une position seulement avec la fonction substr_replace(). Il faut indiquer en premier paramètre la chaîne de référence, en deuxième paramètre la chaîne de remplacement, et en troisième paramètre la position du premier caractère à remplacer.

<?php
$chaine = "On m'enseigne le XHTML et le CSS2"; // chaîne de référence
$pos = strpos($chaine,"X"); // recherche de la position de 'X' avec strpos()
$remplacement = "judo";
echo substr_replace($chaine,$remplacement,$pos);
?>

Affichage

On m'enseigne le judo

A lire aussi

tutowebdesign

Afficher du contenu au scroll

Afficher du contenu au scroll Voici un effet impressionnant et pourtant très facile à mettre en place sur vos pages. Le principe consiste à faire

Lire »