算式的解析算法
程序员文章站
2022-04-10 20:26:22
...
这几天没事就用php写了一个解析程序。
例如:(21*12-23-(21+14-(21-31/3+(14-21*12-14))+54)-21)+21*25-22*26
然后解析的结果就是:-169.33。
现将代码贴出,如果有不妥的地方还请各位程序员朋友们指出。
if(isset($_GET['sizhi'])){ $sizhi=$_GET['sizhi']; if(!checkSizhi($sizhi)){ echo('算式不合法,检查括号是否配对'); }else{ $sizhi=priority($sizhi); echo(calculate($sizhi)); } } //检查算式是否合法 function checkSizhi($sizhi){ $Amatch=array(); $pattern='/((\d|!)\()|([-\+\*\/]\))|[^-\+\*\/!\d\(\)]/'; if(preg_match($pattern,$sizhi,$Amatch)>0){ echo('不合法的元素:'); print_r($Amatch); return false; }else{ $kuohao=0; for($i=0,$k=strlen($sizhi);$i0){ echo("阶乘阶段出问题,请改算式"); exit(); }else{ //替换所有阶乘的部分 $sizhi=preg_replace_callback($par,function($siz){ return calculateFactorial($siz[0]); } , $sizhi); } //交换符号与数字并计算 return change($sizhi); } //计算阶乘 function calculateFactorial($sizhi){ for ($i=0; $i0){ $str=$array[0]; } return $str; } }
以上就介绍了算式的解析算法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
上一篇: PHP引述陷阱
下一篇: php字符串分割函数用法实例详解
推荐阅读
-
redux的源码解析
-
数据结构 - 身为phper,如何有效地提高自己的算法水平,逻辑能力?
-
chrome app无法显示php解析后的html内容
-
小程序的四次元口袋:editor富文本编辑器的使用、渲染,以及rich-text进行解析
-
神箭手云爬虫-爬取携程【国际】航班/机票信息-利用python解析返回的json文件将信息存储进Mysql数据库
-
帮朋友写的时时彩各彩种中奖算法
-
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析_PHP
-
解析用PHP实现var_export的详细介绍_PHP教程
-
请问一个树节点的删除算法,请大家过来看看吧
-
WordPress中调试缩略图的相关PHP函数使用解析,wordpress缩略图