Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/04/2007, 15h24   #1
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Par défaut Supprimer caractères invisibles au sein d'une chaîne

Bonjour,

Je voudrais supprimer les caractères invisibles au sein d'une chaîne, des caractères du type \n \t \r etc.

Je sais que la fonction trim() permet d'enlever ce type de caractères au début et à la fin d'une chaîne seulement, en existe-t-il une qui permette de faire ça dans une chaîne? Si non, comment pourrais-je procéder?

Merci.
__________________
Pensez au tag
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h37   #2
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
je pense que le plus simple serait de faire une petite fonction utilisant str_replace.
Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
function nettoyerChaine($chaine)
{
     // rajoute autant de caractères invisibles à supprimer que tu le souhaite dans ce tableau
     $caracteresASupprimer = array("\r","\n","\t");
 
     foreach($caracteresASupprimer as $unCaract)
          $chaine = str_replace($unCaract,'',$chaine);
 
     return $chaine;
}
Voila, c'est peut-être pas la solution la plus économe en ressource processeur si tu l'appelles beaucoup, mais elle à le mérite d'être très simple au moins
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h37   #3
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Code :
1
2
 
preg_replace('#\s#', '', $chaine);
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h42   #4
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Merci pour vos réponses. J'ai essayé avec les regex et str_replace mais ça ne change rien...

Le texte provient en fait d'une bdd où il a été stocké par un textearea sur plusieurs lignes, je voudrais pouvoir le récupérer sur une seule. Le hic c'est que ces caractères sont invisibles même dans la bdd mais lorsque je lis la source de la page le contenu apparaît en plusieurs lignes : donc des \n traînent là quelque part.

Pour ceux qui se trouvent au début et à la fin de la chaîne pas de problème la fonction trim s'en charge bien.

webrider
__________________
Pensez au tag
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h45   #5
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Citation:
Envoyé par webrider
Merci pour vos réponses. J'ai essayé avec les regex et str_replace mais ça ne change rien...
Il n'y a pas de raison pour que ça ne marche pas ... fais voir ton code ?
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h45   #6
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Oups j'ai parlé trop vite après quelques reload le problème s'est arrangé avec str_replace, peut-être que la page restée en cache a eu du mal à se rafraîchir.

Merci à tous les 2 en tous cas!

webrider
__________________
Pensez au tag
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h49   #7
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
en meme temps, si tu fait un preg_replace sans récuperer la chaine qu'il te retourne c'est normal ^^

Code :
$chaine = preg_replace('#\s#', '', $chaine);
(Navré de ne pas te l'avoir donné je pensai que tu l'aurais deviner ^^)

Edit : Remarque, moi je vire les espaces aussi lol
Code :
1
2
$array = array("\t", "\n", "\r");
preg_replace($array, '', $chaine);
C'est mieux et sa se rapproche de l'autre solution donnée mais en plus... concise :p
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h52   #8
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Citation:
Envoyé par Korko Fain
(Navré de ne pas te l'avoir donné je pensai que tu l'aurais deviner ^^)
Pas de souci je l'avais deviné, c'est la même chose avec str_replace.

Je pense aussi que dans mon cas str_replace est plus approprié que d'utiliser du regex en terme de perfo. En même temps il est vrai que je ne suis pas google ni microsoft donc les visiteurs sont plus que limités sur mon site!
__________________
Pensez au tag
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h55   #9
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Et surtout que j'ai édité pcq je vire les espaces aussi :p
J'ai repris le meme principe que donné plus haut mais je laisse à php le soin de faire la boucle lui meme (tu peux gagner quelques microns :p)
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 11h07   #10
Membre éprouvé
 
Homme
Inscription : mai 2006
Messages : 694
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : mai 2006
Messages : 694
Points : 417
Points : 417
Impec merci Korko!
__________________
Pensez au tag
webrider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h29.


 
 
 
 
Partenaires

Hébergement Web