分类: 系统运维
2012-03-26 14:42:12
/**
* version:1.0
* author:于燚
* 2012年3月23日21:21:30
*
函数功能:计算任意加减乘除数学表达式的结果
* eg:echo jisuan("2/5-9+8*3/4");//输出结果2.6
*
更多功能正努力中......
*
* */
function
jisuan($str){
$pat1="/\+/";
$pat2="/-/";
$pat3="/\*/";
$pat4="/\//";
$sum=0;
if(preg_match($pat1,$str)){
$arr=explode("+",$str);
foreach($arr
as
$val){
$pat="/[\/\*\+-]/";
if(preg_match($pat,$val)){
$val=jisuan($val);
}
$sum+=$val;
}
}else
if(preg_match($pat2,$str)){
$arr=explode("-",$str);
foreach($arr
as $key =>
$val){
$pat="/[\/\*]/";
if(preg_match($pat,$val)){
$val=jisuan($val);
}
if($key==0){
$sum=$val;
}else{
$sum-=$val;
}
}
}else
if(preg_match($pat3,$str)){
$arr=explode("*",$str);
foreach($arr
as $key =>
$val){
$pat="/[\/]/";
if(preg_match($pat,$val)){
$val=jisuan($val);
}
if($key==0){
$sum=$val;
}else{
$sum*=$val;
}
}
}else{
$arr=explode("/",$str);
foreach($arr
as $key =>
$val){
if($key==0){
$sum=$val;
}else{
if($val==0){
header("Content-Type:text/html;charset=utf-8");
exit("表达式不合法!!!");
}
$sum/=$val;
}
}
}
return
$sum;
}
echo jisuan("2/5-9+8*3/4");
?>
原文地址: