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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Caractères répétés (preg_replace)

par Zahnzao » 17 janv. 2009, 17:55

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.

par blof » 17 janv. 2009, 17:25

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.

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

par Zahnzao » 17 janv. 2009, 15:58

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.