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 :

Analyse de string qui bute sur les astérisques


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut Analyse de string qui bute sur les astérisques
    Bonjour à tous,
    Je souhaite coder une fonction en PHP qui retourne faux s'il y a un problème de parenthésage dans une équation mathématique passée en paramètre en string, et vrai sinon.

    Voici mon code:
    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
    23
    24
    25
    26
    27
    28
    29
     
    function verif ($expr)
    {
    	$closing_brackets=0;
    	$opening_brackets=0;
     
    	for($i=0; $i<sizeof($expr); $i++)
    	{
    		if (strcmp('(',$expr[$i]))
    		{
    			$opening_brackets++;
    		}
    		if (strcmp(')',$expr[$i]))
    		{
    			$closing_brackets++;
    		}
    	}
    	if ($opening_brackets!=$closing_brackets)
    	{
    		return 0;
    	}
            return 1;
    }
     
    $f = '3*4+(5-2)*(5+5';
    $t = '4*(5+(8-(10-5)))';
     
    echo '<br/>L\'equation '.$t.' est '.verif($t).'<br/>';
    echo 'L\'equation '.$f.' est '.verif($f);
    Problème: ma fonction s'arrête systématiquement sur le premier caractère de la chaine (donc un seul tour de boucle dans la "for"). Je pense que ma fonction bute sur les caractères spéciaux. Comment contourner ça?

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    La fonction php sizeof() qui est un alias de count() qui sert à compter le nombre d'élément d'un array.

    Vu que tu lui passe un string, la fonction sizeof() te renverra toujours 1.

    Pour compter le nombre de caractère contenu dans un string, il faut utiliser la fonction strlen()
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    mais sinon, tu peux simplifier ton code en utilisant la fonction substr_count() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function verif ($expr)
    {
    	return ((substr_count($expr, '(') == substr_count($expr, ')')) ? 1 : 0 );
    }
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Points : 103
    Points
    103
    Par défaut
    Merci à toi!
    Mais comment vous faites pour être aussi bons? Une fonction pareille en une ligne!?

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

Discussions similaires

  1. Un regex qui fonctionne sur les testeurs en ligne, mais pas dans mon code
    Par billybobbonnet dans le forum Développement Windows
    Réponses: 4
    Dernier message: 28/01/2015, 17h20
  2. Boucle qui teste sur les paramètres
    Par ameura1 dans le forum WinDev
    Réponses: 12
    Dernier message: 05/09/2014, 11h24
  3. Réponses: 35
    Dernier message: 05/04/2011, 11h50
  4. probleme d'instalation de paquetsous ubuntu qui tape sur les nerfs
    Par amazinggaijin dans le forum Administration système
    Réponses: 0
    Dernier message: 07/12/2007, 19h54
  5. Un script qui renseigne sur les droits
    Par kenny_badboy dans le forum Linux
    Réponses: 15
    Dernier message: 28/12/2006, 00h57

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