2012-01-19 51 views
6

我的數據庫中的表1的行看起來像如何獲得定義的值通過變量

enter image description here

我存儲在身上,在名爲vars另一列所有變量。然後取出所有的變量。如果它們是多個,用「,」符號爆炸。

我想要做的是,從數據庫獲取所有使用的變量,然後通過第二個函數filter進行過濾。如您所見,過濾器有3個輸入:$content, $needle, $replacement

$內容 - 消息體,

$針 - %。什麼我們正在尋找。 %

$ replacement - 是我們從數據庫中獲得的var,由php定義。例如,如果我從數據庫中獲得wsurl,它已經在我的settings.php中定義,如DEFINE(「wsurl」,「www.yourdomain.com」)。

問題是,我怎樣才能發送定義值作爲第三個輸入 - $replacement

public function genMsg($id) { 
    $msgid = $id; 
    $stmt = $db->prepare('SELECT `body`, `status`, `vars` FROM `messages` WHERE `id`=?') or die(htmlspecialchars($this->db->error)); 
    $stmt->bind_param("i", $msgid) or die(htmlspecialchars($stmt->error)); 
    $stmt->execute() or die(htmlspecialchars($stmt->error)); 
    $stmt->bind_result($message, $status, $vars) or die($stmt->error); 
    $stmt->fetch() or die($stmt->error); 
    $stmt->close(); 
    $image = ($status == -1) ? "fail" : "success"; 
    if (isset($vars) && !empty($vars)) { 
     if (strpos($vars, ",")) { 
      $vars = explode(",", $vars); 
      foreach ($vars as $key => $var) { 
       $this->filter($message, $var, <HERE MUST BE DEFINED VALUE>); 
      } 
     } else { 
      $var = trim($vars); 
      $this->filter($message, $var, <HERE MUST BE DEFINED VALUE>); 
     } 
    } 
    $data = array(
     'status' => $status, 
     'message' => $message 
    ); 
} 

protected function filter($content, $needle, $replacement) { 
    return str_replace("%'.$needle.'%", $replacement, $content); 
} 
+0

請更新您的問題,而不是發佈一個幾乎相同的一個。投票關閉這個[str_replace函數問題](http://stackoverflow.com/questions/8921462/str-replace-function-issue)的重複,因爲新的更好。 – deceze

回答

相關問題