テーブル名とフィールド名に自動的にバッククォートを付けようとすると、 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`
preg_replaceを使用して同じ手順を試しましたが、これでも同じ出力が得られます。