A voir également:
- [PHP] La plus grande suite d'un caractère
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Caractere speciaux mac - Guide
- Easy php - Télécharger - Divers Web & Internet
6 réponses
jeangilles
Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
186
10 juil. 2009 à 22:07
10 juil. 2009 à 22:07
heu ...
$this->data = preg_replace('#(-)+#', '-', $this->data);
ca marche pas ?
$this->data = preg_replace('#(-)+#', '-', $this->data);
ca marche pas ?
Salut,
Au pire tu peut toujours parcourir ta chaine de caractère en testant si le caractère en cours est un "-" tu teste le caractère suivant si c'est un "-" aussi tu supprime le caractère en cours. Comme ça, ça devrait marcher même s'il y a 3 "-" ou plus qui se suivent.
Bon courage!!
++
Au pire tu peut toujours parcourir ta chaine de caractère en testant si le caractère en cours est un "-" tu teste le caractère suivant si c'est un "-" aussi tu supprime le caractère en cours. Comme ça, ça devrait marcher même s'il y a 3 "-" ou plus qui se suivent.
Bon courage!!
++
Merci de vos réponse!
Pour jeangilles, ta proposition ne fonctionnait pas : ça me mettait des tirets entre chacun des caractères de la chaine.
Pour sith, j'ai cherché dans ton sens et j'ai trouvé une solution qui fonctionne! Mais c'est un peu lourd quoi je pense. Si quelqu'un a une solution plus optimale, je suis preneur ^^
En attendant, voilà avec quoi je vais fonctionner :
Encore merci ^^
Pour jeangilles, ta proposition ne fonctionnait pas : ça me mettait des tirets entre chacun des caractères de la chaine.
Pour sith, j'ai cherché dans ton sens et j'ai trouvé une solution qui fonctionne! Mais c'est un peu lourd quoi je pense. Si quelqu'un a une solution plus optimale, je suis preneur ^^
En attendant, voilà avec quoi je vais fonctionner :
function Filter() { $this->data = htmlentities($this->data, ENT_NOQUOTES, 'utf-8'); $this->data = preg_replace('#\&([A-za-z])(?:uml|circ|tilde|acute|grave|cedil|ring)\;#', '\1', $this->data); $this->data = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $this->data); $this->data = preg_replace('#\&[^;]+\;#', '', $this->data); $in = array('?', '!', '.', ',', '_', ';', ':', '/', ' ', '"', "'", '(', ')'); $out = array('-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'); $this->data = str_replace($in, $out, $this->data); $delete = array(); for($i=0; $i<strlen($this->data); $i++) { if($this->data[$i] == '-' && $this->data[$i+1] == $this->data[$i]) { $delete[] = $i+1; } } foreach($delete as $value) { $this->data[$value] = ' '; } $this->data = str_replace(' ', '', $this->data); if($this->data[strlen($this->data)-1] == '-') { $this->data[strlen($this->data)-1] = ' '; } if($this->data[0] == '-') { $this->data[0] = ' '; } $this->data = str_replace(' ', '', $this->data); $this->data = strtolower($this->data); return $this->data; }
Encore merci ^^
jeangilles
Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
186
11 juil. 2009 à 16:55
11 juil. 2009 à 16:55
ha oui dsl javais du faire une ptite erreur
mais ce que tu veux cest bien remplacer plusieurs tirets par un seul quand c'est le cas ?
si oui, ca ca marche parce que je l'ai testé avant de poster cette fois ci XD
$chainefinale = eregi_replace("[-]+", "-", $chaine_a_traiter);
mais ce que tu veux cest bien remplacer plusieurs tirets par un seul quand c'est le cas ?
si oui, ca ca marche parce que je l'ai testé avant de poster cette fois ci XD
$chainefinale = eregi_replace("[-]+", "-", $chaine_a_traiter);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'allais justement proposer la même fonction que je venais de trouver ici:
http://www.illogeek.fr/php/supprimer-plusieurs-occurences-dun-caractere-dans-une-chaine-avec-php/50/
mais jeanGilles a été plus rapide que moi!!
enfin normalement ça devrait marcher maintenant...
++
http://www.illogeek.fr/php/supprimer-plusieurs-occurences-dun-caractere-dans-une-chaine-avec-php/50/
mais jeanGilles a été plus rapide que moi!!
enfin normalement ça devrait marcher maintenant...
++
Parfait !
Je pense qu'on ne peut pas faire mieux !
Voila ce que ça donne, servez-vous si vous en avez besoin :
Je pense qu'on ne peut pas faire mieux !
Voila ce que ça donne, servez-vous si vous en avez besoin :
function Filter() { $this->data = htmlentities($this->data, ENT_NOQUOTES, 'utf-8'); $this->data = preg_replace('#\&([A-za-z])(?:uml|circ|tilde|acute|grave|cedil|ring)\;#', '\1', $this->data); $this->data = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $this->data); $this->data = preg_replace('#\&[^;]+\;#', '', $this->data); $in = array('?', '!', '.', ',', '_', ';', ':', '/', ' ', '"', "'", '(', ')', '[', ']', '{', '}', '=', '#', '|', '@', '*', '^'); $out = array('-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'); $this->data = str_replace($in, $out, $this->data); $this->data = stripslashes($this->data); $this->data = eregi_replace("[-]+", "-", $this->data); if($this->data[strlen($this->data)-1] == '-') { $this->data = substr($this->data, 0, -1); } if($this->data[0] == '-') { $this->data = substr($this->data, 1); } $this->data = strtolower($this->data); return $this->data; }