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 :

Probleme avec string [FAQ]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 24
    Points
    24
    Par défaut Probleme avec string
    Salut à tous,

    Voilà en fait j'ai un petit code php qui me permet de composer, à l'aide de lettre gif, des mots entier.

    Donc ce qui m'a posé problème, c'était l'espace et j'ai pu trouver. J'ai donc ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $string = $_POST['Titre'];
    for ($i=0;$i<strlen($string);$i++){
          if($string[$i] == ' ')
              echo '<img src="' . $_POST['taille'] . '/space.gif">';
          else
              echo '<img src="' . $_POST['taille'] . '/' . $string[$i] . '.gif">';
    }
     
    ;?>
    Mais bon, maintenant, j'ai un autre problème sur lequel je buche depuis le 14 décembre, et je ne trouve pas de solution.

    En fait, lorsque l'on tape un mot, il faut obligatoirement le mettre en minuscule parce que si je mets une majuscule, il refuse l'image.

    Pour être un peu plus clair le mot: bonjour, s'affichera en gif mais le mot Bonjour, affichera une croix+onjour en gif.

    Donc j'ai essayer de suivre le php qui se trouve plus haut en modifiant. Exemple pour le A majuscule qui porte le nom de Aa.gif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if($string[$i] == 'Aa')
              echo '<img src="' . $_POST['taille'] . '/Aa.gif">';
          else
              echo '<img src="' . $_POST['taille'] . '/' . $string[$i] . '.gif">';
    mais bon évidement, ca fonctionne pas parce que je comprends pas le fonctionnement je pense.

    Pourriez vous y jeter un oeil et me dire ce que vous en pensez?

    Merci à vous tous.
    Michael

  2. #2
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Hello,

    Mais PHP n'est pas sans ressource sur ces problemes là...

    La fonction ctype_lower() permet de vérifier si une chaine est entièrement en minuscules...
    Mais je pense que tu cherche plus quelque chose du type strtolower() qui convertit une chaine de caractères en minuscules.

    Ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mydata = strtolower('AaBbCc');
    echo mydata;
    Cela devrait t'afficher aabbcc

    @+
    cadou

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 24
    Points
    24
    Par défaut Merci
    Bien merci pour la réponse, mais tu parles chinois pour moi

    si tu pouvais etre plus clair ou me donner un lien avec une aide par rapport à cela. Je me suis mis au php, j'ai suivi des cours que je pensais complet mais j'ai pas vu ca...

    Merci pour ta réponse.

    michael

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    quoi qu'en faite, j'y réflechis. Mais je pense que ce que tu me communiques ne peut pas fonctionner.

    Ici il ne s'agit pas de taper un mot qui est transformé en minuscule mais bien que le php sélectionne les bons gifs pour faire le mot.

    Donc pour Bonjour, avec B majuscule:

    Bb.gif
    o.gif
    n.gif
    j.gif
    o.gif
    u.gif
    r.gif

    Tout comme pour l'espace entre les mots il a fallu mettre space.gif...

    Actuellement, si je mets B ca marche pas... voilà voilà...

    Merci

  5. #5
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    J'aurais une question pour toi : Est-ce obligé d'utiliser tes gif ?

    Je dis ça parce que tu peux faire la même chose avec la librairie GD

    Pour revenir à ton problème : Tes majuscules sont créées comment ? Ont-elles un nom spécifique ? Si oui il faudrait modifier on code et tester pour voir si c'est une majuscule, en gros ça deviendra très lourd comme code. Donc déjà l'idée de mettre un nom comme Bb pour B risque de poser problème si tu garder ton parcours de la chaine.
    Sinon dernière question : Tes majuscules sont uniquement en début de phrase ?

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    Hello,

    Merci pour ta réponse.

    En fait, pour ce qui est des Gifs, oui je dois les utiliser puisqu'il s'agit de faire des titres styles glitters.

    Ensuite, pour créér mes majuscules, elles le sont déjà. Elles se trouvent sur le serveur comme pour les minuscules. Pour ce qui est du nom, je vais m'expliquer:

    la lettre b.gif correspond à b minuscule.
    la lettre Bb.gif correspond à B majuscule
    Pour ce qui est de la ponctuation, elle est nommé style point.gif

    Pour te faire une idée de ce à quoi sert ce générateur, il est utilisé pour réaliser des pages de décorations pour des tournois qui se jouent dans une ligue.

    Je te donne, si nécessaire, le lien où tu trouves celui-ci. Le problème se pose à l'étape 2 donc tu peux passer l'étape 1 en cliquant sur suivant.
    décorateur


    Je pense que cela sera plus clair si tu vois ce que ca donne en essayant avec majuscule et non.

    Par contre, la majuscule ne sera pas spécialement en première position: le mot entier pourrait l'être ou encore le second titre.

    Si avec le lien tu comprends toujours pas, tant pis, lol

    Merci en tout cas de ton aide.
    Michael

  7. #7
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Comme je le disais plus haut le soucis ne vient pas du nommage (quoi que si) mais plutot de ton parcours de la chaine. Tu fais caractères par caractères.
    Ce qui faudrait c'est changé le nom de tes images ou faire deux conditions
    l'une qui serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($car > 'A' and $car < 'Z')
    pour les majuscules et là tu rajoutes ta deuxième lettre minuscule pour constituer ton nom img
    et l'autre test consiste à faire les minuscules...

    Tu vois un peu l'idée ?

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    je comprends ce que tu dis mais pas tout à fait...

    disons que c'est du chinois en fait...

  9. #9
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Prenons un exemple, tu as Bonjour

    > Tu parcoures la chaîne comme tu le fais pour le moment.
    > Etant donné que l'utilisateur va pas te faire plaisir en mettant Bbonjour il faut que tu le gères toi même. Mais le fait de parcourir ta chaîne caractères par caractères ne te permettra pas en l'état de prendre en compte tes majuscule donc c'est à toi de le faire. d'où mon idée ...
    > Tu parcoures ta chaîne comme tu le fais déjà sauf que tu rajoutes une condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($chaine[$i] > 'A' and $chaine[$i] < 'Z')
    ....
    else
    ....
    Ca te permettra ainsi de distinguer les majuscules et les minuscules. Si tu as une majuscule tu gardes le caractères et en plus tu le concatènes avec sa version minuscule.

    Ainsi ton problème devrait être résolu

    [edit] Si tu préfères il existe une fonction qui renvoi le code ASCII d'un caractère ord.Ma solution le prend déjà en compte mais à toi de voir

  10. #10
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Hello,

    J'arrive sans doute après la guerre mais il me semble que les fonctions que j'avais donné peuvent toujours régler ton probleme...

    Imaginons que le mot Bonjour soit éclaté dans un tableau $myword.
    Ce qui donnerait un truc du style :
    $myword[0] = B
    $myword[1] = o
    $myword[2] = n
    etc....

    Pour le parcourir tu va certainement faire une boucle lettre par lettre avec un while ou un foreach....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    foreach ($myword as $letter) {
      if (ctype_lower($letter)) {
       echo "Cette lettre est en minuscule.\n";
      } else {
       echo "Cette lettre est en majuscule.\n";
      }
    }
    Pour en savoir plus sur la fonction ctype_lower :
    http://fr2.php.net/manual/fr/function.ctype-lower.php

    @+
    cadou
    PS : Ceci dit, Kerod n'a pas tort, tu devrais t'intérresser à la librairie GD... Dans ton cas elle peut faire des miracles

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 24
    Points
    24
    Par défaut
    hello à tous,

    je vais laisser tomber pour le moment et je vais voir ce qu'est le GD... avez vous des liens pour tutoriaux à ce propos?

    Merci à tous. Michael

  12. #12
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Tu as ceci GD puis Mettre un copyright sur une liste d'image qui te montre commen écrire

Discussions similaires

  1. Probleme avec string et variable.
    Par pierre987321 dans le forum Delphi
    Réponses: 3
    Dernier message: 26/04/2007, 13h22
  2. probleme avec string
    Par krovomi dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/02/2007, 17h15
  3. probleme avec string
    Par elghadi_mohamed dans le forum C++
    Réponses: 13
    Dernier message: 18/10/2006, 11h45
  4. [RegEx]Probleme avec String.split
    Par sebastieng dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/02/2006, 21h24
  5. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

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