如何将<< with > =和>替换为<=,并用<替换为<= with >和> =如果它们在同一个字符串中出现多次?
我正在使用PHP工作。我有一个这样的字符串: “AND day_1> = day_2和day_1 < day_3” ,我想,以取代第一> =与<,我想替换第二<与> =如何将<< with > =和>替换为<=,并用<替换为<= with >和> =如果它们在同一个字符串中出现多次?
换句话说,我想扭转日期范围逻辑:
“AND day_1> = day_2和day_1 < day_3”
我想逆转这个样子:
“AND day_1 < day_2和day_1> = day_3 “
这里是我的代码:
$str = "AND day_1 >= day_2 AND day_1 < day_3";
echo "{$str}<br>";
$old_replace = array(">=", "<=", "<", ">");
$new_replace = array("<", ">", ">=", "<=");
$count = 1;
$str = str_replace($old_replace, $new_replace, $str, $count);
echo $str;
当我尝试使用字符串替换它这样做:
之前更换:AND day_1> = day_2和day_1 < day_3 后替换:AND day_1 < = = day_2和day_1 < == day_3
试试这个:
$replacements = Array("<="=>">",">="=>"<","<"=>">=",">"=>"<=");
$str = strtr($str,$replacements);
谢谢!当我反转这些参数并将$ str放在第一位时,这是有效的,而$替换为第二。但我越看这个问题,就越需要我。现在我发现语句要真正逻辑反转,我还需要将第二个AND更改为AND,并将该字符串包装在括号中:第一个括号(在第一个AND和第二个括号之后)在字符串末尾。 – 2013-02-13 19:04:32
对不起,我已经用'preg_replace_callback'开始了,忘了改变参数的顺序。很高兴你能弄清楚 - 所以很多人似乎都无能为力...... – 2013-02-13 19:18:16
你想达到什么目的?这可能不是最好的解决方法。 – Hammerite 2013-02-13 17:23:10
是的,我也开始这么想......我试图做的是以编程方式反转sql语句,但现在我意识到我需要改变第二个AND和OR并添加括号以使该声明在逻辑上颠倒过来。 – 2013-02-13 19:01:00