двойное разделение

Discussion in 'PHP' started by .::BARS::., 11 May 2010.

  1. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    Привет... такая проблема... есть выражение.. к примеру 32+32-42
    я сделал разделение только по +, а нужно еще и -

    вот код

    PHP:
    <?
    echo 
    '<form method="post" action="?a=ok">
    Выражение: <br><input name="v" size="150"/><br>
    <input value="разбить" type="submit" /></form>'
    ;
    if (
    $_GET['a']=='ok'){
        
    $v=$_POST['v'];
        
    $c=explode('+',$v);
        
    $count=count($c);
        echo 
    '<hr>Элементов: <b>'.$count.'</b><br>';
        for (
    $i=0$i<count($c); $i++) {
            
    $n=$i+1;
            echo 
    'Элемент <b>'.$n.'</b>: <b>'$c[$i] .'</b><br>';
        }
    }
    ?>
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Воспользуйся preg_split
     
    _________________________
  3. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    причем элемент с - должен остальтя с -
     
  4. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    дай пример
     
  5. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <? 
    echo '<form method="post" action="?a=ok"> 
    Выражение: <br><input name="v" size="150"/><br>
    <input value="разбить" type="submit" /></form>'; 
    if ($_GET['a']=='ok'){ 
        $znak=array("+","-","*","/");
        $d=str_split($_POST['v'].$znak[0]);
        $i=0;
        foreach ($d as $value){
           if(!in_array($value,$znak)) {   
              $temp.=$value;
           } else {
              $i++;
              echo "Элемент $i: $temp \n";
              $temp=""; 
           }
        }
    }
    ?>
    </pre>
    ^_^
     
    2 people like this.
  6. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    PHP:
    <?
    echo 
    '<form method="post" action="?a=ok">
    Выражение: <br><input name="v" size="150"/><br>
    <input value="разбить" type="submit" /></form>'
    ;
    if (
    $_GET['a']=='ok'){
        
    $v=$_POST['v'];
        
    $c=preg_split("/[\s]*[-+][\s]*/"$v);;
        
    print_r($c);
        
    $count=count($c);
        echo 
    '<hr>Элементов: <b>'.$count.'</b><br>';
        for (
    $i=0$i<count($c); $i++) {
            
    $n=$i+1;
            echo 
    'Элемент <b>'.$n.'</b>: <b>'$c[$i] .'</b><br>';
        }
    }
    ?>
    но как - выхватить!?
     
  7. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    PHP:
    preg_match_all ('/[+-]?\d+/'$str$m);
    $m[0] = array_map ('intval'$m[0]);
     
    1 person likes this.