2012-01-19 23 views
6

bảng cơ sở dữ liệu của tôi 1 hàng trông như thếgiá trị như thế nào để có được xác định bởi biến

enter image description here

Tôi đang lưu trữ tất cả các biến được sử dụng trong cơ thể, trong một cột tên là vars. Sau đó tìm nạp tất cả các vars. Nếu chúng là nhiều, hãy bùng nổ bằng ký hiệu ",".

Điều tôi muốn làm là tìm nạp tất cả các vars đã sử dụng từ db, sau đó lọc chúng theo hàm thứ hai filter. Như bạn thấy, bộ lọc có 3 đầu vào: $content, $needle, $replacement.

$ nội dung - thông điệp cơ thể,

$ kim - % .what chúng tôi đang tìm kiếm. %

$ thay thế - là var mà chúng tôi nhận được từ cơ sở dữ liệu, được định nghĩa bởi php. Ví dụ, nếu tôi nhận được wsurl từ cơ sở dữ liệu, nó đã được định nghĩa trong settings.php của tôi như DEFINE ("wsurl", "www.yourdomain.com").

Câu hỏi là, làm cách nào để gửi giá trị được xác định làm đầu vào thứ ba - $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

Vui lòng cập nhật câu hỏi của bạn thay vì đăng một hầu như giống hệt nhau. Bỏ phiếu để đóng này là trùng lặp của [vấn đề chức năng str_replace] (http://stackoverflow.com/questions/8921462/str-replace-function-issue), kể từ khi cái mới là tốt hơn. – deceze

Trả lời

Các vấn đề liên quan