[1/2HS] suite =?utf-8?q?d'opérations_arithmétiques_en?= php

9 réponses
Avatar
ajh-valmer
Hello Í  tous,

Comment écrire le bon script php pour réaliser cette suite d'opération
sur une seule ligne ? : p. ex. 2+9*5-7

Opération entre 2 valeurs, c'est facile : $res=$a+$b;
mais
moins facile avec la suite ci-dessus. Sans doute par une boucle ?
J'ai vainement cherché sous gouguel.

Cerise sur la gÍ¢teau, et cette opération de puissance également sur
une seule ligne ? : a puissance 5 (a^5)

Voici le schéma :
<input type="text" name="suiteope">
Entrer la suite d'opérations : 2+9*5-7
VALIDER

Idem,
Entrer la suite d'opérations : 2^6
VALIDER

Grand merci d'une aide ou d'un tuyau.

A. Valmer

9 réponses

Avatar
Daniel Caillibaud
Le 11/02/21 Í  13:09, "ajh-valmer" a écrit :
Hello Í  tous,
Comment écrire le bon script php pour réaliser cette suite d'opération
sur une seule ligne ? : p. ex. 2+9*5-7

Je comprend pas bien le pb… `php -r 'echo 2+9*5-7;'` affiche bien 40
Opération entre 2 valeurs, c'est facile : $res=$a+$b;
mais
moins facile avec la suite ci-dessus. Sans doute par une boucle ?

Non, vraiment pas utile ici…
J'ai vainement cherché sous gouguel.

Commence plutÍ´t par https://www.php.net/manual/fr/
Cerise sur la gÍ¢teau, et cette opération de puissance également sur
une seule ligne ? : a puissance 5 (a^5)

Tu trouveras la réponse facilement avec le lien précédent, dont
https://www.php.net/manual/fr/language.operators.arithmetic.php
https://www.php.net/manual/fr/ref.math.php
PS: tout ça n'a vraiment rien Í  voir avec debian, ni même avec linux…
--
Daniel
Je suis aveugle, mais on trouve toujours plus malheureux que soi...
J'aurais pu être noir.
Ray Charles
Avatar
ajh-valmer
On Thursday 11 February 2021 14:39:55 Daniel Caillibaud wrote:
Le 11/02/21 Í  13:09, "ajh-valmer" a écrit :
Comment écrire le bon script php pour réaliser cette suite d'opération
sur une seule ligne ? : p. ex. 2+9*5-7 :

Je comprend pas bien le pb… `php -r 'echo 2+9*5-7;'` affiche bien 40

php -r 'echo 2+9*5-7;'` : ne fonctionne pas.
J'ai vainement cherché sous gouguel :

Commence plutÍ´t par https://www.php.net/manual/fr/
Tu trouveras la réponse facilement avec le lien précédent, dont
https://www.php.net/manual/fr/language.operators.arithmetic.php
https://www.php.net/manual/fr/ref.math.php

Ai évidement lu toutes ces pages.
Elles ne répondent pas Í  ma demande.
Avant de poster, je cherche beaucoup.
PS: tout ça n'a vraiment rien Í  voir avec debian, ni même avec linux…:

Comme d'autres sujets qui n'ont rien Í  voir avec debian, ni même avec linux,
et ne subissent pas cette remarque.
Avatar
MERLIN Philippe
Le jeudi 11 février 2021, 15:20:34 CET ajh-valmer a écrit :
On Thursday 11 February 2021 14:39:55 Daniel Caillibaud wrote:
Le 11/02/21 Í  13:09, "ajh-valmer" a écrit :
> Comment écrire le bon script php pour réaliser cette suite d'opération
> sur une seule ligne ? : p. ex. 2+9*5-7 :
Je comprend pas bien le pb… `php -r 'echo 2+9*5-7;'` affiche bien 40

php -r 'echo 2+9*5-7;'` : ne fonctionne pas.

Désolé ajh Je ne connais rien Í  php mais j'ai exécuté la commande php et
j'obtiens bien comme résultat 40.
Ma participation.
Philippe Merlin
Avatar
Daniel Caillibaud
Le 11/02/21 Í  15:20, "ajh-valmer" a écrit :
php -r 'echo 2+9*5-7;'` : ne fonctionne pas.

Alors il te manque le paquet php-cli
Commence plutÍ´t par https://www.php.net/manual/fr/
Tu trouveras la réponse facilement avec le lien précédent, dont
https://www.php.net/manual/fr/language.operators.arithmetic.php
https://www.php.net/manual/fr/ref.math.php

Ai évidement lu toutes ces pages.

Et pas trouvé la réponse ?
Dans ce cas reformule la question en donnant un exemple, car d'après ce que tu as énoncé la
réponse est dans ces 2 pages.
Comme d'autres sujets qui n'ont rien Í  voir avec debian, ni même avec linux,
et ne subissent pas cette remarque.

Ça, libre Í  celui qui répond de le faire remarquer ou pas ;-)
Mais tu noteras que cette remarque était précédé des pointeurs précis vers la réponse au pb,
même s'il était complètement HS ici.
--
Daniel
Le génie consiste Í  voir ce que tout le monde a vu
et Í  penser ce que personne n'a pensé.
Avatar
lann
Bonsoir
Pour moi c'est la même chose :
php -r 'echo 2+9*5-7;'
retourne bien 40
Debian Buster avec php :
PHP 7.3.19-1~deb10u1 (cli) (built: Jul 5 2020 06:46:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.19-1~deb10u1, Copyright (c) 1999-2018, by
Zend Technologies
Je connais un peu le php mais ce n'est pas ma tasse de thé
Cordialement
Le Thu, 11 Feb 2021 21:44:20 +0100,
MERLIN Philippe a écrit :
Le jeudi 11 février 2021, 15:20:34 CET ajh-valmer a écrit :
On Thursday 11 February 2021 14:39:55 Daniel Caillibaud wrote:
> Le 11/02/21 Í  13:09, "ajh-valmer" a écrit :
> > Comment écrire le bon script php pour réaliser cette suite
> > d'opération
>
> > sur une seule ligne ? : p. ex. 2+9*5-7 :
> Je comprend pas bien le pb… `php -r 'echo 2+9*5-7;'` affiche bien
> 40
php -r 'echo 2+9*5-7;'` : ne fonctionne pas.
Désolé ajh Je ne connais rien Í  php mais j'ai exécuté la commande php
et j'obtiens bien comme résultat 40.
Ma participation.
Philippe Merlin
Avatar
ajh-valmer
On Thursday 11 February 2021 22:00:36 Daniel Caillibaud wrote:
Le 11/02/21 Í  15:20, "ajh-valmer" a écrit :
php -r 'echo 2+9*5-7;'` : ne fonctionne pas.

Alors il te manque le paquet php-cli :

Il est installé.
https://www.php.net/manual/fr/language.operators.arithmetic.php
https://www.php.net/manual/fr/ref.math.php

Reformule la question en donnant un exemple, car d'après ce que
tu as énoncé, la réponse est dans ces 2 pages sus citées :

La voici :
<input type="text" name="suiteope">
Entrer la suite d'opérations : 2+9*5-7
VALIDER :
echo 2+9*5-7; # code PHP
réponse : 2+9*5-7
Par contre, codes Í  remplacer / ajouter :
$opar=$suiteope;
echo suiteope. ' = ';
print("<b>");
echo eval("return $opar ;" );
$erreur=eval("return $opar;");
print("</form>");
Maintenant, le résultat m'affiche bien : 2+9*5-7 = 40
Solution trouvée par hasard sur un site en anglais.
Faut muscler le php, c'est dans "l'air du temps" :-)
Avatar
Daniel Caillibaud
Le 12/02/21 Í  20:11, "ajh-valmer" a écrit :
> https://www.php.net/manual/fr/language.operators.arithmetic.php
> https://www.php.net/manual/fr/ref.math.php

Reformule la question en donnant un exemple, car d'après ce que
tu as énoncé, la réponse est dans ces 2 pages sus citées :

La voici :

C'est un fichier php que tu fais passer par un serveur web qui interprète le php ?
Parce que je vois pas les tags
<?php
// ici c'est du php
?>
<!-- et ici du html -->
<input type="text" name="suiteope">
Entrer la suite d'opérations : 2+9*5-7
VALIDER :
echo 2+9*5-7; # code PHP
réponse : 2+9*5-7
Par contre, codes Í  remplacer / ajouter :
$opar=$suiteope;
echo suiteope. ' = ';
print("<b>");
echo eval("return $opar ;" );

Il ne faut JAMAIS faire de eval sur du texte entré par un utilisateur !
Ici tu fais exécuter par ton serveur du code demandé par celui qui se balade sur ton site,
essaie de taper
readfile('/etc/passwd')
dans ton champ pour voir ce que ça donne ;-)
D'une manière générale, si tu vois du eval dans du code, quel que soit le langage, y'a de
sérieuses questions Í  se poser, les cas o͹ on en a besoin sont vraiment rares (mais ça arrive),
et tu devrais jamais en avoir besoin en js ou php.
$erreur=eval("return $opar;");
print("</form>");
Maintenant, le résultat m'affiche bien : 2+9*5-7 = 40
Solution trouvée par hasard sur un site en anglais.

Fais quand même attention au code que tu mets dans tes pages, les tutoriels qui te proposent de
créer une grosse faille de sécurité sur ton site sont très très nombreux…
Faut muscler le php, c'est dans "l'air du temps" :-)

Ça, j'en suis pas convaincu ;-)
--
Daniel
Si je pouvais choisir le jour de ma mort, je choisirais plutÍ´t le lendemain.
Philippe Geluck, Le chat
Avatar
Vincent Lefevre
On 2021-02-15 19:16:02 +0100, Daniel Caillibaud wrote:
Le 12/02/21 Í  20:11, "ajh-valmer" a écrit :
<input type="text" name="suiteope">
Entrer la suite d'opérations : 2+9*5-7
VALIDER :
echo 2+9*5-7; # code PHP
réponse : 2+9*5-7
Par contre, codes Í  remplacer / ajouter :
$opar=$suiteope;
echo suiteope. ' = ';
print("<b>");
echo eval("return $opar ;" );

Il ne faut JAMAIS faire de eval sur du texte entré par un utilisateur !

Si c'est valide, gros bug de conception de PHP!
Par exemple en Perl:
$ echo 'print "OKn"' | perl -Te 'eval <STDIN>'
Insecure dependency in eval while running with -T switch at -e line 1, <STDIN> line 1.
--
Vincent Lefèvre - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
Avatar
ajh-valmer
On Monday 15 February 2021 19:16:02 Daniel Caillibaud wrote:
Le 12/02/21 Í  20:11, "ajh-valmer" a écrit :
$opar=$suiteope;
echo suiteope. ' = ';
print("<b>");
echo eval("return $opar ;" );

Il ne faut JAMAIS faire de eval sur du texte entré par un utilisateur !
Si c'est valide, gros bug de conception de PHP.

Je le crois bien.
C'est indiquer sur : www.php.net/manual/fr/function.eval.php
"Son utilisation est vivement déconseillée"
Alors remplacer "eval" par quel autre script ?
Merci
A. Valmer