2009-10-21 17:40

[PHP] 利用 strtr() 做變數(樣版)置換

以前在處理 SQL 指令時都是使用 sprintf() 去做變數替換,但常常會遇到兩個問題。
  1. 先後順序固定缺乏彈性,尤其在多語處理的時候
  2. 變數定義缺乏語意(%s),在維護時難以閱讀不直覺


後來找到 strtr() 這個函數可以執行多個字串的取代,在變數替換時蠻方便的,可以有效的克服上面的問題,當然根據使用上的需求最好還是包裝一下。
  1. <?php 
  2. $query = " 
  3.    INSERT INTO `system_uesr`  
  4.    SET `Id` = :id, 
  5.        `Name` = :name 
  6. "; 
  7.  
  8. $bind = array( 
  9.    ":id" => "'1'",  
  10.    ":name" => "'jax'" 
  11. ); 
  12.  
  13.  
  14. echo strtr($query, $bind); 
  15. // 結果: 
  16. //    INSERT INTO `system_uesr`  
  17. //    SET `Id` = '1', 
  18. //        `Name` = 'jax'  


參考文章:
PHP: strtr - Manual
PHP strtr() 函数
strtr --- 轉換某些字元