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";
}
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";
}