Page 1 sur 1

Caractères répétés (preg_replace)

Posté : 17 janv. 2009, 15:58
par Zahnzao
Bonjour,

j'utilise ce petit bout de code pour supprimer les caractères répétés plus de 2 fois dans une chaine.
$nom = preg_replace('#(.)\1{2,}#', '\1\1', $nom);
maintenant si le caractère est un espace, je voudrai le limiter a un seul.
preg_replace('# {2,}#', ' ', $nom)
Mais peut on le faire en une seule fonction ou est ce que je cherche pour rien ? J'ai effectué une multitude de test sans succès.

Merci.

Posté : 17 janv. 2009, 17:25
par blof
Bonjour,
<pre>
<?php

$nom = 'abbccccccccccdddd              e ffff';

$nom = preg_replace('#(([^ ])\2)\2+|( )+#', '\1\3', $nom);

echo $nom;

?>
</pre>

bon ... c'est pas beau à voir. :?

Le faire en 2 fois ( pour les espaces, puis pour le reste ) serait peut-être plus rapide.

Posté : 17 janv. 2009, 17:55
par Zahnzao
Oula j'aurai jamais trouvé ca !

Fonctionne parfaitement et après test, tu as raison, le faire en 2 fois est 2 fois plus rapide.

Merci.