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 :

Remplacement de caractères dans une chaines


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Remplacement de caractères dans une chaines
    Bonjour à tous !
    J'ai le code suivant qui est sensé me remplacer ma chaine de caractère (qui vient d'un formulaire)par des chiffres correspondants.
    Seulement lorsque j'imprime mon tableau $tab, il me ressort la chaine de caractères du départ
    Une explication ????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function chiffres($txt){
    $chfr=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
    $alpha=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    return strtr($txt,$alpha,$chfr);
    }
     
    $texte=chiffres($_POST['texte']);
    $longueur=strlen($texte);
     
    for ($i=0;$i<$longueur;$i++){
    $tab[$i]=$texte[$i];
    }
    print_r($tab);

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Points : 586
    Points
    586
    Par défaut
    Ben déja là, tu ne fais que construire ta fonction, tu ne l'appelles jamais.

  3. #3
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    ta fonction ne fait rien en gros...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $texte=chiffres("ceci est un test");
    	$longueur=strlen($texte);
     
    	for ($i=0;$i<$longueur;$i++){
    		$tab[$i]=$texte[$i];
    	}
    	print_r($tab);
    tout ce bloc est en dehors...


    Voilà la correction... vu que la fonction sert à rien, je la vire...

    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
    <?php
    # VARIABLES
    $chfr=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
    $alpha=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    $txt="ceci est un test";
    $texte = str_replace($alpha,$chfr,$txt);
    $longueur=strlen($texte);
     
    for ($i=0;$i<$longueur;$i++){
    	$tab[$i]=$texte[$i];
    }
    echo "<pre>";
    print_r($tab);
    echo "</pre>";
    ?>
    EDIT : si si, la fonction était bien appellée mais perdue au milieu du code... et elle ne faisait rien. Ce qui aurait été bien c'est de faire TOUT le code dans le fonction, et return $tab...



    EDIT 2:
    voici :
    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
    21
    22
    <?php
    // V2
    # FONCTION
    function chiffres($txt) {
    	$chfr = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
    	$alpha = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    	$texte = str_replace($alpha, $chfr, $txt);
    	$longueur = strlen($texte);
    	// Conversion en array
    	$tab = array();
    	for ($i = 0; $i < $longueur; $i++){
    		$tab[$i]=$texte[$i];
    	}
    	return $tab;
    }
    # TEST
    $_POST['txt'] = "ceci est un test";
    $test = chiffres($_POST['txt']);
    echo "<pre>";
    print_r($test);
    echo "</pre>";
    ?>

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Ben si j'ai ma fonction à part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function chiffres($txt){
    $chfr=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
    $alpha=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    return strtr($txt,$alpha,$chfr);
    }
    et le reste du code qui appelle la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $texte=chiffres($_POST['texte']);
    $longueur=strlen($texte);
     
    for ($i=0;$i<$longueur;$i++){
    $tab[$i]=$texte[$i];
    }
    print_r($tab);

  5. #5
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonjour, alors tout dans le même PHP c'est plus facile,
    ensuite surtout pas d'emploie de POST

    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
    21
     
    function chiffres($txt){
    $chfr=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
    $alpha=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    return strtr($txt,$alpha,$chfr);
    }
     
    if (isset($_POST["texte"])) $texte1=trim($_POST["texte"]);
        else $texte1="";
    $texte=chiffres($texte1);
    $longueur=strlen($texte);
    echo ("".$texte."<br />"); 
     
    /* ===== c est quoi ce truc =========
    for ($i=0;$i<$longueur;$i++){
    $tab[$i]=$texte[$i];
    }
    print_r($tab);
    ====================== */
     
    ?>

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Bonjour, alors tout dans le même PHP c'est plus facile,
    ensuite surtout pas d'emploie de POST
    Merci pour ta contribution mais si je tape "toto" dans mon champ de texte, le script que tu m'as donné me ressort toto........ le probleme reste entier......

  7. #7
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par jeanmi681 Voir le message
    Merci pour ta contribution mais si je tape "toto" dans mon champ de texte, le script que tu m'as donné me ressort toto........ le probleme reste entier......
    OUI OUI j'avais pas fait attention,

    L'architecture est bonne mais pas la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $chfr=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
    $alpha=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    return strtr($txt,$alpha,$chfr);
    parce que ce ne sont pas des array !! ou alors c'estpas 1,2 mais '1','2'
    mais normalement c'est un char et non un array !!
    va lire la doc !

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    et on lit pas mes posts ?

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par darkstar123456 Voir le message
    et on lit pas mes posts ?
    Sisi, mais ton post est arrivé en même temps que le mien !
    Je vais tester ça
    Merci

  10. #10
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    bon... en revérifiant, y'avait un bug vu que certains caractères vallaient un chiffre et d'autres 2....

    voici la correction (uniquement pour la V2)
    Code php : 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
    21
    22
    23
    24
    25
    26
    <?php
    // V2
    # FONCTION
    function chiffres($txt) {
    	// Ici on ajoute des 0 pour les chiffres de 1 à 9 + ajoute du caractères "espace" => 00
    	$chfr = array('00', '01','02','03','04','05','06','07','08','09',10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26);
    	$alpha = array(' ', 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    	$texte = str_replace($alpha, $chfr, $txt);
    	$longueur = strlen($texte);
    	// Conversion en array
    	$tab = array();
            // On change l'incrémentation de $i++ en $i+=2
    	for ($i = 0; $i < $longueur; $i+=2){
    		// Ici, à la base l'écriture n'était pas correcte car on utilise des accolades et non des crochets...
    		// j'en profite pour préciser de prendre 2 caractères au lieu d'un
    		$tab[$i]=$texte{$i}.$texte{$i+1};
    	}
    	return $tab;
    }
    # TEST
    $txt_test= "ceci est un test";
    $test = chiffres($txt_test);
    echo "<pre>";
    print_r($test);
    echo "</pre>";
    ?>

Discussions similaires

  1. Remplacer un caractère dans une chaine
    Par Mujin dans le forum Débuter
    Réponses: 4
    Dernier message: 11/07/2009, 11h10
  2. Remplacer des caractères dans une chaine et enlever certains
    Par Lucas Panny dans le forum SL & STL
    Réponses: 6
    Dernier message: 12/01/2009, 14h26
  3. Réponses: 4
    Dernier message: 14/11/2008, 21h00
  4. Remplacer des caractères dans une chaine interbase 7.5
    Par zaydoun_391 dans le forum InterBase
    Réponses: 1
    Dernier message: 15/04/2008, 16h57
  5. Réponses: 4
    Dernier message: 29/08/2006, 17h44

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