[Code] Remplacer des || (double pipe) successifs

Ayant eu le problème récemment, je vous livre ce petit truc :

Expression régulière pour remplacer des || (séparés ou pas par des espaces) :

/(\|\|)(\s*\|\|)+/

La commande PHP résultante est :

$texte_sortant = preg_replace('/(\|\|)(\s*\|\|)+/', '||', $texte_entrant);

Petite explication rapide :

  • \|\| pour les deux barres verticales (on échappe les caractères spéciaux via \)
  • \s* pour « 0 ou plusieurs caractères d’espacement »
  • le * à la fin permet d’indiquer qu’on recherchera entre 0 et n fois la chaîne (\s*\|\|)

Il s’agissait à l’origine de code HTML épuré via strip_tags et avec des retours à la ligne remplacés par des || : donc on se retrouvait rapidement avec des trucs du style || || || || :)

Cette entrée a été publiée dans Petits bouts (de code). Vous pouvez la mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>