正则-10<善恶<10 判断

class ConditionExpression {
public function __construct() {
mb_regex_encoding('UTF-8');
}
public function test_reqs($playerInfo, $str) {
$result = $this->parse($str, "\$playerInfo");

$flag = null;
$str2 = "\$flag = (" . $result . ");";
//print $str2 . "\n";
eval($str2);
return $flag;
}
private function parse($str, $infoName) {
// step 1. 把 , 更换成为 && 运算
$p1 = "[\s]*[,,][\s]*";
$r1 = " && ";
$result = mb_ereg_replace($p1, $r1, $str);
// step 2. 把 1<a<2 更换成为 a>1 && a<2
$p2 = "([-0-9]+)<(.+)<([-0-9]+)";
$r2 = "\\2>\\1 && \\2<\\3";

$result = mb_ereg_replace($p2, $r2, $result);
// step 3. 把一些名称更换成为属性指向
$p5 = "心性|善恶|悟性|体质|内力|力道|杀气|气力|福缘|身法|魅力|琴|棋|书|画";


$r5 = $infoName . "[\"\\0\"]";
$result = mb_ereg_replace($p5, $r5, $result);
return $result;
}
static function conditional_expression_replace($matches) {
print_r($matches);
return $matches[0];
}
}


// 一个测试情况
function  test1() {
// $str = "善恶>0 , 心性<30";
// $str = "善恶>0";
$str = "-10<善恶<10";
$playerInfo = array("善恶"=>2, "心性"=>40);
$handler = new ConditionExpression();
$flag = $handler->test_reqs($playerInfo, $str);
print ($flag?"True":"False") . "\n";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值