我在嘗試自動在表名和字段名周圍添加反引號時遇到了str_replace的一些問題。str_replace與字符串的不正確部分匹配
假設我有以下陣列:
$match = array('rooms.roomID','r_rooms.roomID');
$replace = array('`rooms`.`roomID`','`r_rooms`.`roomID`');
$subject = 'rooms.roomID = r_rooms.roomID';
str_replace($match,$replace,$subject);
,我想到的是結果:
`rooms`.`roomID` = `r_rooms`.`roomID`
但是,相反,我得到這個:
`rooms`.`roomID` = r_`rooms`.`roomID`
但是如果我更改r_rooms至r_ooms,我的結果如預期
`rooms`.`roomID` = `r_ooms`.`roomID`
我試過同一precedure,使用了preg_replace,但是這給了我同樣的輸出以及。
或者切換的值的順序('rooms.roomID'是r_rooms.roomID'的'一部分,所以應該來稍後),或者用字邊界('\ b')做一個圍繞它的'preg_replace'。 – Wrikken 2013-05-14 17:13:49