Médiaforma

All posts tagged preg_replace

Remplacez tous les espaces consécutifs multiples par un seul espace dans la chaîne suivante :

$ch = "Cette     chaîne contient    un     peu   trop d'espaces, mais      preg_replace
          va la simplifier !";

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.

Cet exercice ne devrait pas vous avoir posé trop de problèmes.

Etant donné qu’une chaîne doit être remplacée par une autre, nous allons faire appel à la fonction preg_replace.

Pour trouver les chaînes composées de un ou plusieurs espaces, il suffit d’insérer un espace suivi du signe + dans l’expression régulière. Encadrez cette chaîne par des # et l’expression régulière est constituée. La chaîne de remplacement est un simple espace.

Remarquez l’utilisation des balises <pre> et </pre>. Grâce à elles, il est possible d’afficher plusieurs espaces consécutifs dans le document. Si elles n’avaient pas été spécifiées, HTML aurait automatiquement remplacé les espaces multiples
Compteur de mots : 212
Brouillon enregistré à 12 h 31 min 55 s.

Publier

Aperçu
État : Brouillon Modifier
Visibilité : Public Modifier
Publier tout de suite
par de simples espaces.

<?php
  $ch = "Cette     chaîne contient    un     peu   trop d'espaces, mais      preg_replace
          va la simplifier !";
  $ch2 = preg_replace("# +#", " ",$ch);
  echo "<pre>";
  echo "AVANT : ".$ch."<br><br>";
  echo "APRES : ".$ch2;
  echo "</pre>";
?>

Exécutons ce code dans WAMP Server. Voici le résultat. Comme vous pouvez le voir, les espaces multiples ont bien été remplacés par de simples espaces.

 


Supposons maintenant que vous vouliez transformer en lien les adresses qui commencent par http://, https:// et ftp://.

Voici la chaîne à transformer :

$ch="Les URL https://www.mediaforma.com, mais aussi https://google.fr et
ftp://ftp.cdrom.com peuvent être transformés en des liens cliquables.";

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.

Le code est identique à celui de l’exercice précédent. Seule l’expression régulière change.

Ici, la chaîne recherchée peut commencer par http, https ou ftp.

Le point d’interrogation après https indique que le caractère s est facultatif. https? Peut donc sélectionner la chaîne http ou https. La barre verticale est un OU logique. L’expression recherchée pourra donc être http, https ou ftp.

Cette chaîne doit être suivie du caractère :, de deux slash et d’une chaîne composée de caractères minuscules ou majuscules, de chiffres, de points, de caractères de soulignement et/ou de tirets.

<?php
  $ch="Les URL https://www.mediaforma.com, mais aussi https://google.fr et
  ftp://ftp.cdrom.com peuvent être transformés en des liens cliquables.";
  $ch2 = preg_replace("#((https?|ftp)://[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 de type http et https et les adresses FTP ont bien été remplacées par des liens hypertextes.