Médiaforma

All posts tagged expressions régulières

Remplacez toutes les adresses http:// par des liens cliquables.

Voici la chaîne concernée :

$ch = "Les moteurs de recherche http://www.google.fr et http://www.bing.com sont aujourd'hui les plus utilisés.";

Solution

Faites une pause dans la vidéo et rédigez le code de l’exercice. Vous pourrez poursuivre pour comparer votre code et celui de la solution.

L’expression régulière est passée à la fonction preg_replace. Cette fonction demande trois arguments :

  • L’expression régulière utilisée pour EFFECTUER LA recherche
  • La chaîne de remplacement
  • La chaîne sur laquelle se fera le remplacement

Comme toujours, l’expression régulière est encadrée par les caractères #, au début et à la fin de la chaîne.

Pour repérer une adresse URL, nous recherchons une séquence qui commence par http:// et qui est suivie d’un nombre quelconque de caractères minuscules, majuscules, de chiffres, de points, de caractères de soulignement et de tirets.

La chaîne de remplacement contient une balise <a>. L’attribut href de cette balise est initialisé avec $1, ce qui représente la chaîne sélectionnée par l’expression régulière. Cette même expression est réutilisée à la suite de la balise <a> puis la balise <a> est fermée.

Enfin, la chaîne $ch est passée en troisième argument de la fonction preg_replace.

Deux instructions echo sont utilisées pour afficher la chaîne avant et après l’exécution de la fonction preg_replace.

 

<?php
  $ch = "Les moteurs de recherche http://www.google.fr et http://www.bing.com sont aujourd'hui les plus utilisés.";
  $ch2 = preg_replace("#(http://[a-zA-Z0-9._-]*)#", "<a href='$1'>$1</a>",$ch);
  echo "AVANT : ".$ch."<br>";
  echo "APRES : ".$ch2;
?>

Exécutons ce code dans WAMP Server. Voici le résultat. Comme vous pouvez le voir, les URL ont bien été remplacées par des liens hypertextes.


Les expressions régulières permettent de faire des recherches très précises et très efficaces dans des chaînes de caractères. Dans le tableau suivant sont rassemblées toutes les conventions d’écriture à connaitre pour utiliser des expressions régulières. Parcourrez-le à votre rythme. Une fois que vous aurez une petite idée de la façon d’utiliser tout ce charabia, visionnez la rubrique suivante pour avoir un exemple pratique d’utilisation des expressions régulières.

Expression Signification Exemple
# Caractère de début et de fin de l’expression #expression régulière#
^ Début de la chaîne ^a sera vrai si la chaîne commence par un a
$ Fin de la chaîne t$ sera vrai si la chaîne se termine par un t
. N’importe quel caractère a, b, z, T, 1, @, etc
? Répète 0 ou 1 fois le caractère précédent xy? Signifie x ou xy
* Répète 0, 1 ou plusieurs fois le caractère précédent xy* signifie x, xy, xyy, xyyy, etc.
+ Répète 0, 1 ou plusieurs fois le caractère précédent xy+ signifie x, xy, xyy, xyyy, etc.
\ Le caractère d’échappement \ autorise l’utilisation de caractères réservés \. Est équivalent au point décimal
[xyz] Un caractère unique de l’expression [xyz] signifie x, y ou z
[^xyz] Un caractère unique à l’exclusion des caractères de l’expression [^xyz] signifie un caractère quelconque sauf x, y et z
[a-z] Un caractère unique compris entre les deux bornes [a-zA-Z] signifie une lettre minuscule ou majuscule quelconque
exp1|exp2 exp1 ou exp2 PHP4|PHP5 signifie PHP4 ou PHP5
{min, max} Répétition du caractère précédent entre min et max fois x{2,3} signifie xx ou xxx

x{1,} signifie x, xx, xxx, xxxx, etc.

x{,3} signifie chaîne vide, x, xx ou xxx