Section courante

A propos

Section administrative du site

PREG_REPLACE

Régulière - Remplace
PHP 4+

Syntaxe

function preg_replace($pattern, $replacement, $subject);
function preg_replace($pattern, $replacement, $subject, $limit);
function preg_replace($pattern, $replacement, $subject, $limit, $count);

Paramètres

Nom Description
$pattern Ce paramètre permet d'indiquer la chaine de caractères ou le tableau de recherche.
$replacement Ce paramètre permet d'indiquer la chaine de caractères ou le tableau de remplacement.
$subject Ce paramètre permet d'indiquer la chaine de caractères ou le tableau contenant la source.
$limit Ce paramètre permet d'indiquer le nombre de remplacements. La valeur par défaut est -1, soit l'équivalent de «g» en Perl.
$count Ce paramètre permet de retourner le nombre de remplacements effectués.

Retour

Valeur Description
tableau Ces valeurs permet d'indiquer le résultat de traitement sur des tableaux.
chaine de caractères Ces valeurs permettent d'indiquer le résultat de traitement sur des chaines de caractères.

Description

Cette fonction permet d'effectuer un traitement de remplacement avec des expressions régulières (regex).

Remarques

Exemples

Voici un exemple montrant comment remplacer les apostrophes (simple quote) par des guillemets (double quote) dans les balises «IMG SRC» du HTML sans tenir compte des majuscules ou des minuscules (la lettre «i» pour les attributs) :

Essayer maintenant !
  1. <?php
  2. $Source = "<img src=\"1.jpg\"><img src = '2.jpg' /><IMG src='3.jpg'><img src='4.jpg' border=\"1\"><img src='4.jpg'><img border=\"1\" src='6.jpg' ><img SRC='7.gif' style=\"border:1px;\">";
  3.  
  4. $Result = preg_replace('/<img([^>]*)src\s*=\s*["\'\']([^"\'\']+)["\'\']([^>]*)>/i', '<img$1src="$2"$3>', $Source);
  5. echo strtr($Result,array("<" => "<",">" => ">"));
  6. ?>

on obtiendra le résultat suivant :

<img src="1.jpg"><img src="2.jpg" /><img src="3.jpg"><img src="4.jpg" border="1"><img src="4.jpg"><img border="1" src="6.jpg" ><img src="7.gif" style="border:1px;">

L'exemple suivant permet d'ajouter «rel="nofollow"» dans les balises «A» dans des liens HTML :

Essayer maintenant !
  1. <?php
  2. $Source = '<p>Ceci est un exemple de texte</p><a href="http://www.gladir.com/" target="_blank">HOME</a><p>suite du texte<p><a href="http://www.gladir.com/php">PHP</a>';
  3.  
  4. $Result = preg_replace('/<a ([^>]*)href\s*=\s*["\'\']http:\/\/www\.gladir\.com([^"\'\']+)["\'\']([^>]*)>/i', '<a $1href="http://www.gladir.com$2"$3 rel="nofollow">', $Source);
  5. echo $Result;
  6. ?>

on obtiendra le résultat suivant :

<p>Ceci est un exemple de texte</p><a href="http://www.gladir.com/" target="_blank" rel="nofollow">HOME</a><p>suite du texte<p><a href="http://www.gladir.com/php" rel="nofollow">PHP</a>

L'exemple suivant permet d'enlever les attributs «style» de toutes les balises HTML :

Essayer maintenant !
  1. <?php
  2. function styleCleaner($string) {
  3.     return preg_replace('/(<[^>]+) style=".*?"/i', '$1', $string);
  4. }
  5.  
  6. echo styleCleaner('<p><span style="text-decoration: underline;"><strong>Voir également</strong></span></p>');
  7. ?>

on obtiendra le résultat suivant :

<p><span><strong>Voir également</strong></span></p>

L'exemple suivant permet d'enlever l'attribut «style» uniquement dans les paragraphes du HTML :

Essayer maintenant !
  1. <?php
  2. function ParagraphStyleCleaner($string) {
  3.     return preg_replace('/<p style="(.+?)">(.+?)<\/p>/i', "<p>$2</p>", $string);
  4. }
  5.  
  6. echo ParagraphStyleCleaner('<html><body style="color:green;"><p style="border: 1px solid blue;">Gladir.com</p><body></html>');
  7. ?>

on obtiendra le résultat suivant :

<html><body style="color:green;"><p>Gladir.com</p><body></html>

Voir également

Langage de programmation - PHP - Référence de procédures et de fonctions - preg_split
Langage de programmation - PHP - Référence de procédures et de fonctions - preg_match
Langage de programmation - Perl - Les expressions régulières

Dernière mise à jour : Dimanche, le 5 avril 2015