仅用正则表达式去分析数学表达式有一定的困难。这个例子不一定能识别所有的可能
<?php
$p = array (
array("/ +/",""),
array("/[0-9a-z]+/i","expr"),
array("/expr[-*+\/]{1}expr/","expr"),
array("/\(expr\)/","expr")
);
foreach($p as $v) {
$p0[] = $v[0];
$p1[] = $v[1];
}
$s = "(aaa + (bbb-ccc))*ddd/eee"; // 正确的
$s = "(aaa ++ (bbb-ccc))*ddd/eee"; // 错误的
do {
$o = $s;
}while(($s = preg_replace($p0,$p1,$o))!= $o);
if($o != "expr")
echo "不是合法的数学表达式";
echo $o;
?>
<?php
$p = array (
array("/ +/",""),
array("/[0-9a-z]+/i","expr"),
array("/expr[-*+\/]{1}expr/","expr"),
array("/\(expr\)/","expr")
);
foreach($p as $v) {
$p0[] = $v[0];
$p1[] = $v[1];
}
$s = "(aaa + (bbb-ccc))*ddd/eee"; // 正确的
$s = "(aaa ++ (bbb-ccc))*ddd/eee"; // 错误的
do {
$o = $s;
}while(($s = preg_replace($p0,$p1,$o))!= $o);
if($o != "expr")
echo "不是合法的数学表达式";
echo $o;
?>
解决方案 »
- PHP excelreader 报错 求指点
- 求教这样一个问题
- 数据用数组读出三个字段,如何 合并成一个字符串,菜鸟问题,大家帮忙!!!!
- 各位大虾,小妹有个问题.需要帮忙.谢谢.怎么样用PHP实现获得另一台机器的唯一的一个标识,例如MAC,另一台机器安装的是MYSQL.
- php如何判断js或css文件的代码格式是gbk还是utf8(3)?
- 谢谢大家!
- 内部网站限制访问的问题
- 正则表达式的问题
- 用什么邮件服务器让PHP在WINDOWS下支持MAIL()函数
- socket_select(), 请大神讲解
- 怎么用php连接mssql后,读下一条记录?
- 5555555~~ ,我快失去信心/,但决定再问一次??
我想unix兼容系统下的lex、yacc把编译方法表现的很好了。如果自己写很难写出这样只有数十k的代码。
我是快退休的人了,我期望看到新一代的成长!
谢了
你的代码正在测试中~请稍等~