2013-02-13 100 views
2

我正在使用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

+0

你想達到什麼目的?這可能不是最好的解決方法。 – Hammerite 2013-02-13 17:23:10

+0

是的,我也開始這麼想......我試圖做的是以編程方式反轉sql語句,但現在我意識到我需要改變第二個AND和OR並添加括號以使該聲明在邏輯上顛倒過來。 – 2013-02-13 19:01:00

回答

2

試試這個:

$replacements = Array("<="=>">",">="=>"<","<"=>">=",">"=>"<="); 
$str = strtr($str,$replacements); 
+0

謝謝!當我反轉這些參數並將$ str放在第一位時,這是有效的,而$替換爲第二。但我越看這個問題,就越需要我。現在我發現語句要真正邏輯反轉,我還需要將第二個AND更改爲AND,並將該字符串包裝在括號中:第一個括號(在第一個AND和第二個括號之後)在字符串末尾。 – 2013-02-13 19:04:32

+0

對不起,我已經用'preg_replace_callback'開始了,忘了改變參數的順序。很高興你能弄清楚 - 所以很多人似乎都無能爲力...... – 2013-02-13 19:18:16

相關問題