IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Supprimer caractères invisibles au sein d'une chaîne [RegEx]


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    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.

  2. #2
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    je pense que le plus simple serait de faire une petite fonction utilisant str_replace.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preg_replace('#\s#', '', $chaine);

  4. #4
    Invité
    Invité(e)
    Par défaut
    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

  5. #5
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    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 ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    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

  7. #7
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Invité
    Invité(e)
    Par défaut
    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!

  9. #9
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    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)

  10. #10
    Invité
    Invité(e)
    Par défaut
    Impec merci Korko!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/06/2009, 09h38
  2. Réponses: 7
    Dernier message: 27/12/2008, 20h53
  3. Réponses: 3
    Dernier message: 02/09/2008, 11h54
  4. Réponses: 12
    Dernier message: 08/08/2008, 11h03
  5. Lire les caractères un par un d'une chaîne unicode
    Par vanbesienv dans le forum Général Python
    Réponses: 4
    Dernier message: 09/03/2008, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo