faire l'operation située dans une chaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : faire l'operation située dans une chaine

par la fripouille » 14 juil. 2006, 20:19

Ah ça y est, j'y suis arrivé :P
eval("\$result[1] = $result[1];"); 
Merci beaucoup à toi moogli ;)

par la fripouille » 14 juil. 2006, 19:56

Merci, mais je ne comprends pas comment utiliser eval(), j'ai un parse error chaque fois.

Dans ma 1ère condition :
if( $choix == 1 )
    {
        $signe = array(' plus ', ' moins ');
        $operation = mt_rand(15, 20) . $signe[mt_rand(0, 1)] . mt_rand(5, 10) . $signe[mt_rand(0, 1)] . mt_rand(1, 5);
        $result[0] = 'Combien font ' . $operation . ' ?';
        $result[1] =  str_replace($signe, array('+', '-'), $operation);
    }
$result[0] me retourne par exemple :
Combien font 19 plus 6 moins 1 ?

$result[0] me donne :
19+6-1

Donc, je voudrais avoir le résultat de l'opération, donc 24.

Comment je dois faire avec eval() ?

Merci.

par moogli » 14 juil. 2006, 19:20

salut,

je ne comprend pas, ce que tu souhaite. Tu désire affecter le resultat de quoi ?

d'apres ton code tu retourne la question et la couleur associer ce qui me parait etre le but recherché :)
tu n'a pas de code php dans tes chaines.

Je pense que la fonction eval être ce que tu cherche.

@+

faire l'operation située dans une chaine

par la fripouille » 14 juil. 2006, 15:16

Bonjour,

Je suis en trian de faire une petite fonction antibot, mais il y a un truc que je n'arrive pas à faire, c'est de faire comprendre à php que je désire qu'il me fournisse le résultat d'un opération située dans une chaine, donc qu'il me l'interprète pas en tant que string, mais comme du code.

Voici le code, mon problème se situe dans la 1ère condition.
function antibot()
{
    $choix = mt_rand(1, 5);
    if( $choix == 1 )
    {
        $signe = array(' plus ', ' moins ');
        $operation = mt_rand(15, 20) . $signe[mt_rand(0, 1)] . mt_rand(5, 10) . $signe[mt_rand(0, 1)] . mt_rand(1, 5);
        $result[0] = 'Combien font ' . $operation . ' ?';
        $result[1] =  str_replace($signe, array('+', '-'), $operation);
    }
    elseif( $choix == 2 )
    {
        $color = array('#00f', '#f00', '#0f0', '#ff0', '#000');
        $nom = array('bleu', 'rouge', 'vert', 'jaune', 'noir');
        $prop = implode(', ', $nom);
        $c = mt_rand(0, count($color));
        $quest = '<p><span style="color: ' . $color[$c] . '">';           
        $quest .= 'De quelle couleur est cette phrase ? ';
        $quest .= '</span><br />';
        $quest .= $prop . ' ?';
        $result[0] = $quest;
        $result[1] = $nom[$c]; 
    }
    elseif
    {
    
    }
    // etc...
    return $result;
}

$antibot = antibot();
echo $antibot[0];
Comment faire pour obtenir le résultat de l'opération ?
Donc que pour result[1], j'obtienne le résultat et non une chaine.

Merci.