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 || || || ||

