PDA

Просмотр полной версии : двойное разделение


.::BARS::.
11.05.2010, 16:30
Привет... такая проблема... есть выражение.. к примеру 32+32-42
я сделал разделение только по +, а нужно еще и -

вот код

<?
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>';
}
}
?>

Kaimi
11.05.2010, 16:32
Воспользуйся preg_split

.::BARS::.
11.05.2010, 16:34
причем элемент с - должен остальтя с -

.::BARS::.
11.05.2010, 16:37
дай пример

Pashkela
11.05.2010, 17:24
<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>


^_^

.::BARS::.
11.05.2010, 17:34
<?
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>';
}
}
?>

но как - выхватить!?

krypt3r
12.05.2010, 07:23
preg_match_all ('/[+-]?\d+/', $str, $m);
$m[0] = array_map ('intval', $m[0]);