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
- Quand vous utilisez des tableaux avec les paramètres $pattern et $replacement, les clefs spécifiés sont traités dans l'ordre apparaissant dans le tableau. Par conséquent, il ne s'agit pas de la même chose que l'ordre des index du tableau. Aussi, si vous utilisez des index pour indiquer quel recherche (à l'aide du paramètre $pattern) doit être utilisé comme remplacement par le paramètre $replacement, il est souhaitable d'utiliser d'abord la fonction de tri ksort() sur chacun des tableaux avant d'utiliser la fonction preg_replace.
- À partir de la version 5.5.0 du PHP, une alerte de niveau E_DEPRECATED est envoyé par l'interpréteur PHP lorsque vous utilisez le paramètre «\e». À partir de la version 7.0.0 du PHP, une alerte de niveau E_WARNING est envoyé par l'interpréteur PHP dans ce cas, et le paramètre à carrément «\e» aucun effet.
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 !
- <?php
- $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;\">";
-
- $Result = preg_replace('/<img([^>]*)src\s*=\s*["\'\']([^"\'\']+)["\'\']([^>]*)>/i', '<img$1src="$2"$3>', $Source);
- echo strtr($Result,array("<" => "<",">" => ">"));
- ?>
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 !
- <?php
- $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>';
-
- $Result = preg_replace('/<a ([^>]*)href\s*=\s*["\'\']http:\/\/www\.gladir\.com([^"\'\']+)["\'\']([^>]*)>/i', '<a $1href="http://www.gladir.com$2"$3 rel="nofollow">', $Source);
- echo $Result;
- ?>
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 !
- <?php
- function styleCleaner($string) {
- return preg_replace('/(<[^>]+) style=".*?"/i', '$1', $string);
- }
-
- echo styleCleaner('<p><span style="text-decoration: underline;"><strong>Voir également</strong></span></p>');
- ?>
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 !
- <?php
- function ParagraphStyleCleaner($string) {
- return preg_replace('/<p style="(.+?)">(.+?)<\/p>/i', "<p>$2</p>", $string);
- }
-
- echo ParagraphStyleCleaner('<html><body style="color:green;"><p style="border: 1px solid blue;">Gladir.com</p><body></html>');
- ?>
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