首 页 | 联系我们 | 关于优化网 | 中国阀门网-阀门88网 WEB优化行业门户网站-WEB-YOUHUA.CN
当前位置 : 首页 >> PHP技术 >> 百度一面题:解析字符串四则表达式
返回首页

百度一面题:解析字符串四则表达式

时间:2011-11-7 10:14:55 来源:中国优化网 作者:Xiaoyong 人气: 682 发表评论  匿名投稿
<?php/***@authoryusaint*@copyright2011*/functioncal($expr){$splittedBy_multi=explode(*,$expr);//(12/3)(2)(1(中国阀门网-中国泵阀网-五金机械网)
  1. <?php 
  2.  
  3. /** 
  4.  * @author yusaint 
  5.  * @copyright 2011 
  6.  */ 
  7. function cal($expr
  8.     $splittedBy_multi = explode(*$expr); // (12/3) (2) (12) (12/4) 
  9.     $temp = array(); 
  10.     print_r($splittedBy_multi); 
  11.     foreach ($splittedBy_multi as $k => $v) { 
  12.  
  13.         $splittedBy_divided = explode(/$v); 
  14.         if (count($splittedBy_divided) > 1) { 
  15.             $temp[$k] = intval($splittedBy_divided[0]) * intval($splittedBy_divided[0]); 
  16.             foreach ($splittedBy_divided as $val) { 
  17.                 $temp[$k] /= intval($val); 
  18.             } 
  19.         } else 
  20.             $temp[$k] = intval($v); 
  21.     } 
  22.     return array_product($temp); 
  23.  
  24.  
  25. $expr = "10-4+123+100*98*8/100*4*3+3-12/3/4*2*12*12/4+4-8+12/3*12+12"
  26. $splittedBy_plus = explode(+$expr); //0=>(4*3)  1=>(3-12/3/4*2*12*12/4) 2=>(4-8) 
  27. $temp = array(); 
  28. foreach ($splittedBy_plus as $k => $v) { 
  29.     $splittedBy_minus = explode(-$v); // 3 12/3/4*2*12*12/4 
  30.     if (count($splittedBy_minus) > 1) //(3) (12/3/4*2*12*12/4) (4) (8) 
  31.         { 
  32.         $temp_minus = array(); 
  33.         foreach ($splittedBy_minus as $key => $value) { 
  34.             $temp_minus[$key] = cal($value); 
  35.         } 
  36.         $minus = 2 * $temp_minus[0]; 
  37.         foreach ($temp_minus as $value) { 
  38.             $minus -= (int)$value
  39.         } 
  40.         $temp[$k] = $minus
  41.     } else { 
  42.         $temp[$k] = cal($v); 
  43.     } 
  44.  
  45.  
  46. $sum = 0; 
  47. foreach ($temp as $value) { 
  48.     $sum += $value
  49. echo the parsed value is: . $sum."\n"
  50. echo the original value is:.(10-4+123+100*98*8/100*4*3+3-12/3/4*2*12*12/4+4-8+12/3*12+12); 
  51. ?> 

 


”欢迎转载www.web-youhua.com文章,谢谢

(责任编辑:Xiaoyong)
------分隔线----------------------------
本公司致力于网站建设,网站优化,搜索引擎优化(SEO),Google左侧排名等服务。欢迎转载收藏web-youhua.com
用户名:  验证码:   
理智评论文明上网,拒绝恶意谩骂  [ 查看全部 ] 网友评论
相关推荐