Умножение в строке

Discussion in 'PHP' started by Boolean, 5 Nov 2010.

  1. Boolean

    Boolean Elder - Старейшина

    Joined:
    5 Sep 2010
    Messages:
    147
    Likes Received:
    83
    Reputations:
    78
    Имею спарсенную строку с заменой символов и прочей предисторией:
    $str="(5739^5739)";

    Нужно ее "решить"..
    Сначала подумал eval(); но он не проканает

    Прошу помощи.
     
  2. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    почему?
     
    _________________________
  3. Boolean

    Boolean Elder - Старейшина

    Joined:
    5 Sep 2010
    Messages:
    147
    Likes Received:
    83
    Reputations:
    78
    $a="5739^5739";
    $b=eval($a);


    не робит. хотя у меня подозрение что я это не правильно делаю.
     
  4. WNZRS

    WNZRS Member

    Joined:
    3 Sep 2009
    Messages:
    294
    Likes Received:
    52
    Reputations:
    1
    PHP:
    $a="5739^5739";
    eval(
    '$b='.$a.';');
     
    2 people like this.
  5. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    eval('$a=5739*5739;');
    ^ - не умножение а битовая операция - исключающее или

    в целом, если даётся образцовая строка $str="5739^5739";,
    то перемножить можно так:
    $b=explode('^',$str);
    $a=intval($b[0])*intval($b[1]);
     
  6. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Обработайте строку прежде чем считать. Замените неподходящие символы на "правильные"
    */+-% - умножение, деление, сложение, вычитание, деление по модулю.

    PHP:
    <?php
    $var 
    '2+2^2';
    $var str_replace('^','*',$var);

    eval(
    '$res = '.$var.';');
    echo 
    $res;
    ?>
     
    _________________________
  7. Boolean

    Boolean Elder - Старейшина

    Joined:
    5 Sep 2010
    Messages:
    147
    Likes Received:
    83
    Reputations:
    78
    всем спасибо