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 :

incrémentation/décrémentation d'une chaine alphanumérique


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut incrémentation/décrémentation d'une chaine alphanumérique
    Bonjour,

    J'ai un petit problème, j'ai voulu incrémenter une chaine de caractère en php et j'ai utilisé la syntaxe suivante :

    $mot = "mot";
    echo ++$mot;

    Et ça m'affiche "mou" donc l'incrémentation alpha fonctionne

    Par contre j'ai voulu faire la chose suivante pour décrémenter une chaine de caractère :
    echo --$mot;

    mais ça ne fonctionne pas.

    Est ce que vous connaissez un moyen d'arriver à faire une décrémentation de chaine de caractère ?

    Merci pour votre aide

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour
    Citation Envoyé par php.net
    Notez que les variables de caractères peuvent être incrémentées, mais pas décrémentées et même seuls les caractères ASCII (a-z et A-Z) sont supportés.
    Opérateurs d'incrémentation et décrémentation

    Donc forcément, ça ne fonctionne pas

    Dans quel but cherches-tu à dérémenter ta chaine ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    et si la décrémentation n'existe pas alors que l'incrémentation fonctionne, existe t il un script pour pouvoir malgré tout faire la décrémentation de chaine ?

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    On doit pouvoir écrire quelque chose avec des str_replace et autres... Mais c'est peut-être enchainer un dragon pour faire cuire un oeuf au plat

    Donc je répète ma question : à quoi cela va-t-il te servir ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    à quoi cela peut servir ? ben tout simplement à faire l'opération inverse de l'incrémentation pardi !! comme la soustraction est l'opération inverse de l'addition !

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    oui, mais non. ça j'avais compris merci

    Ce que je te demande, c'est à quoi la décrémentation d'une chaine va te servir dans ton code. (Ou alors c'est juste pour la beauté du script )
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    au risque de me répéter, j'ai déjà répondu dans le post précédent : pour faire l'opération inverse de l'incrémentation.

    Si on a le mot "mou", on fait une décrémentation pour afficher le nouveau mot "mot".

  8. #8
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par lydie2469 Voir le message
    au risque de me répéter, j'ai déjà répondu dans le post précédent : pour faire l'opération inverse de l'incrémentation.

    Si on a le mot "mou", on fait une décrémentation pour afficher le nouveau mot "mot".
    Ca, je crois que Celira avais compris... (et moi aussi).

    Mais à quoi cela te sert-il de pouvoir décrémenter une chaîne de caractères (donc récupérer par exemple 'aZ' à partir de 'bA') ?

    Est-ce que c'est juste un exercice, ou veux-tu l'utiliser dans un cas précis (et si oui lequel ?)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    le cas précis le voici mais je resterais flou pour ne pas dévoiler mon projet :
    ce serait un algorithme qui permettrait de décrémenter une chaine pour en quelque sorte trouver le mot qui vient avant un mot donné.
    Comme ++$mot qui donnerai le mot placé après

    Et deuxième explication : ++$mot effectuant une incrémentation de chaine
    je ne trouve pas logique que --$mot ne fasse pas le contraire.
    Donc pour satisfaire ma curiosité de savoir pourquoi ça ne serait pas possible de le faire, je cherche éventuellement un script ou une manière de faire ce --$mot

    Espérant avoir éclairer vos lanternes

  10. #10
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Pour la première partie, trouver le mot précédent (en admettant que ce ne soit pas par ordre alphabétique, sinon ça ne fonctionnera pas avec cette méthode), le meilleur algorithme n'est probablement pas de décrémenter une chaîne de caractères. Tu bois avoir sous une forme ou une autre une liste des "mots" existant ? Ou alors tu veux tester si le mot existe en utilisant un autre site ?
    Parce que sur des mots avec peu de lettres, passe encore, mais sur des mots longs, ton script risque de prendre du temps avant de trouver le mot précédent...

    J'avoue ne pas savoir pourquoi l'auto-décrémentation n'est pas gérée sur les chaînes (en fait, je ne me suis jamais posé la question et n'ai jamais utilisé l'auto-incrémentation sur des chaînes non plus)... Faire une fonction qui permettre la décrémentation est tout à fait faisable, mais ça risque fort de ne pas être simple... récupérer le dernier caractère peut-se faire très simplement ($chaine[strlen($chaine)-1] par exemple), mais ensuite il faut décrémenter, gérer l'arrivée à 'a' pour décrémenter le caractère précédent (s'il existe), etc...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    Donc pour résumer sur un script il faudrait récupérer le dernier caractère :
    $chaine[strlen($chaine)-1]
    puis le décrémenter, oui mais comment (???)

    et comment faire pour détecter l'arrivée de 'a' pour décrémenter le caractère précédent ?

    ça me parait compliquer à faire comme script, je ne vois pas comment faire.
    As tu une idée de script simple ?

  12. #12
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Pour décrémenter, tu peux par exemple utiliser la fonction ord qui récupères le code ascii d'un caractère. pour vérifier si on est à 'a', un simple if suffit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($caractere != 'a')
    {
        $caractere = chr(ord($caractere)-1);
    }
    else
    {
        $caractere = 'z'
    }
    Avant, il faut mettre ton mot en minuscules (ce sera plus simple) et vérifier qu'il ne contienne que des caractères alphabétiques...

    Mais si tu fais ça, ça ne sera pas vraiment l'inverse de l'incrément qui prend en compte aussi bien les majuscules que les minuscules et les chiffres (mais pas les caractères spéciaux, y compris accentués).

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    dans l'absolu la chaine de caractère ne contient que des mots ayant les lettre de a à z en minuscules et le tiret -, donc pas de majuscules, de chiffres ou de caractères spéciaux (sauf le tiret) ! ça marche en incrémentation
    par contre pour la décrémentation, si il y a un tiret ça peut poser problème si on utilise la méthode $caractere = chr(ord($caractere)-1);


    J'ai l'impression que d'écrire un script qui effectue la meme chose que ++$mot mais dans l'autre sens me semble irréalisable et c'est peut être pour ça que --$mot ne fonctionne pas !

    Cela dis c'est quand meme bizarre car il parait qu'avec le php tout est possible... je suis pas sur que quelqu'un arrive à faire ce script ou alors il faut etre super doué...
    mais celui qui trouve est doué en tout cas

  14. #14
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Citation Envoyé par lydie2469 Voir le message
    dans l'absolu la chaine de caractère ne contient que des mots ayant les lettre de a à z en minuscules et le tiret -, donc pas de majuscules, de chiffres ou de caractères spéciaux (sauf le tiret) ! ça marche en incrémentation
    Non : l'incrémentation s'arrête au premier caractère spécial trouvé.
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine = 'a-z';
    echo ++$chaine; // retourne 'a-a' et non 'b-a'
    Citation Envoyé par lydie2469 Voir le message
    J'ai l'impression que d'écrire un script qui effectue la meme chose que ++$mot mais dans l'autre sens me semble irréalisable et c'est peut être pour ça que --$mot ne fonctionne pas !

    Cela dis c'est quand meme bizarre car il parait qu'avec le php tout est possible... je suis pas sur que quelqu'un arrive à faire ce script ou alors il faut etre super doué...
    mais celui qui trouve est doué en tout cas
    C'est tout à fait faisable, et pas si compliqué (juste un peu "prise de tête") mais c'est ce qu'on te dis depuis le début :
    Citation Envoyé par Celira
    Mais c'est peut-être enchainer un dragon pour faire cuire un oeuf au plat
    et c'est aussi pour ça qu'on te demande ce que tu veux en faire car il existe certainement une solution mieux adaptée

Discussions similaires

  1. [XL-2010] Extraction de deux nombres d'une chaine alphanumérique
    Par Sve@r dans le forum Excel
    Réponses: 2
    Dernier message: 15/10/2014, 06h33
  2. enlever caractères alphabétiques d'une chaine alphanumérique
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/11/2012, 10h04
  3. Réponses: 4
    Dernier message: 18/03/2009, 08h46
  4. test sur une chaine alphanumérique
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2008, 16h57
  5. [RegEx] preg_match pour recuperer une chaine alphanumérique
    Par witch dans le forum Langage
    Réponses: 6
    Dernier message: 21/12/2007, 17h31

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