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 :

[Tableaux] simplifier fonction str_replace


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Par défaut [Tableaux] simplifier fonction str_replace
    Bonjour

    est il possible de simplifier cette fonction?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function trait_nom($nom) {
    $nom = str_replace("é","e",$nom);
    $nom = str_replace("è","e",$nom);
    $nom = str_replace("à","a",$nom);
    $nom = str_replace("ù","u",$nom);
    $nom = str_replace("'","_",$nom);
    $nom = str_replace("\"","",$nom);
    $nom = str_replace("+","",$nom);
    $nom = str_replace("\/","",$nom);
    $nom = str_replace("(","",$nom);
    $nom = str_replace(")","",$nom);
    $nom = str_replace(",","",$nom);
    $nom = str_replace(" ","_",$nom);
    return $nom;
    }
     
    merci

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Bonjour,

    Depuis Php 4.0.5, les paramètres peuvent êtres des tableaux, même la chaine à traiter ( traitement de masse )

    Ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function trait_nom($nom) {
    $nom = str_replace(array("é","è",...),array("e",'e',...),$nom);
    return $nom;
    }
    Bonne journée

  3. #3
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    Ca dépend ce que tu cherche à faire !!!! Pourquoi formate-tu comme ca ta variable ?

    Il peut y avoir les expressions régulières, qui remplaceront tous ca par un "masque", et tu utilise après des fonctions comme : preg_replace.....

    Cherche de ce coté là, en expressions regulière il existe beaucoup de solutions toute prête te permettant de faire beaucoup de choses !!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Par défaut
    merci de vos reponses

    je formate cette variable dans le but de créer un fichier
    ex :
    " j'ai formaté cette variable "
    doit devenir
    j_ai_formate_cette_variable.php

  5. #5
    Membre chevronné
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Par défaut
    Voilà un élément de réponse qui pourra t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $str = 'j\'ai formaté cette variable ';
    echo clean_str($str);
     
    function clean_str($str)
    {
    	$accents = array('à' => 'a', 'ä' => 'a', 'â' => 'a', 'é' => 'e', 'è' => 'e', 'ê' => 'e', 'ë' => 'e', 'ï' => 'i', 'î' => 'i', 'ö' => 'o', 'ô' => 'o', 'ü' => 'u', 'ç' => 'c');
    	$str = trim($str);
    	$str = str_replace(array_keys($accents), array_values($accents), $str);
    	$str = preg_replace('#[^a-zA-Z0-9]#si', '_', $str);
    	return ($str . '.php');
    }
    ?>
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Bonjour,

    Ne pourrais-t-on pas se passer du str_replace() vu que l'expression régulière doit supprimer ces caractères de toute façon ?

    Edit : Autant pour moi, le str_replace() est là pour que le nom de la page ne devienne illisible. Désolé mais c'est lundi matin

    Edit2 : Par contre, si la fonction a besoin d'être appeler plusieurs fois ( disons plus de 3-4 fois ) au sein de la page, il est à mon avis plus performant de mettre la déclaration du tableau de caractères à l'extérieur de la fonction pour éviter de la réinstancier à chaque fois. Ou alors il faut le déclarer en statique ( plus propre à mon avis )

  7. #7
    Membre chevronné
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Par défaut
    Le problème c'est qu'il souhaite remplacer les accents par leurs "équivalents", par exemple éèêë par un e. Je n'ai jamais trouver comment le faire avec des les pcre, je ne crois pas que ce soit possible : normal, é et e sont deux caractères différents. Pour nous français un e et un é c'est grossomodo ma même chose, mais pour une pcre ça n'a pas vraiment de sens. Donc le mieux c'est de faire une fonction générique, avec un str_replace par exemple.

    Sinon il y a aussi la fonction strstr() qui a l'air de gérer plus simplement le remplacement de caractères uniques comme dans notre cas de figures, d'ailleur le premier commentaire est un code remplaçant justement les accents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function urlChars($str)
       {
           $str = strtr($str,"\xC0\xC1\xC2\xC3\xC4\xC5\xC6","AAAAAAA");
           $str = strtr($str,"\xC7","C");
           $str = strtr($str,"\xC8\xC9\xCA\xCB","EEEE");
           $str = strtr($str,"\xCC\xCD\xCE\xCF","IIII");
           $str = strtr($str,"\xD1","N");
           $str = strtr($str,"\xD2\xD3\xD4\xD5\xD6\xD8","OOOOOO");
           $str = strtr($str,"\xDD","Y");
           $str = strtr($str,"\xDF","S");
           $str = strtr($str,"\xE0\xE1\xE2\xE3\xE4\xE5\xE6","aaaaaaa");
           $str = strtr($str,"\xE7","c");
           $str = strtr($str,"\xE8\xE9\xEA\xEB","eeee");
           $str = strtr($str,"\xEC\xED\xEE\xEF","iiii");
           $str = strtr($str,"\xF1","n");
           $str = strtr($str,"\xF2\xF3\xF4\xF5\xF6\xF8","oooooo");
           $str = strtr($str,"\xF9\xFA\xFB\xFC","uuuu");
           $str = strtr($str,"\xFD\xFF","yy");
           return $str;
       }
    EDIT : S'il ne s'agit que d'une déclaration pas vraiment besoin de la mettre en statique ça ne changera pas grand chose, c'est pas comme si le tableau prenait une mémoire monstreuse. Mais pour les cas où on a besoin de créer le tableau a partir d'un calcul, là le passer en statique devient interessant
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

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

Discussions similaires

  1. [Tableaux] Similitude fonctions de fichiers et de tableaux
    Par beejeridou dans le forum Langage
    Réponses: 2
    Dernier message: 04/02/2007, 15h46
  2. [Système] Probleme avec la fonction str_replace
    Par british_toons dans le forum Langage
    Réponses: 1
    Dernier message: 21/09/2006, 19h57
  3. [Tableaux] Simplifier une syntaxe
    Par blueice dans le forum Langage
    Réponses: 1
    Dernier message: 07/09/2006, 13h39
  4. Réponses: 11
    Dernier message: 04/07/2006, 14h33
  5. [Tableaux] Fonction str_replace et les accents
    Par GarGamel55 dans le forum Langage
    Réponses: 5
    Dernier message: 18/02/2006, 18h05

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