2017-09-25 44 views
-1

我知道「preg_replace」函數,但不知道如何使用其中的查詢。比如我能夠__轉換成<em>Preg_replace與查詢到數據庫

$text = preg_replace('/__(.+?)__/s', '<em>$1</em>', $text);

我要尋找更強大的東西。 我想將一些預先格式化的文本(即[TTT]112233[/TTT])替換爲查詢結果的另一個文本(即echo "$text2";)。

變量$ text2是查詢結果,如"SELECT * FROM table WHERE id=112233";

有沒有一個嵌入式PHP功能,這樣做?非常感謝,法比奧

+0

問題的措辭不是100%清楚,但我認爲你必須運行查詢,將結果(s)放入變量中,循環遍歷行(如果有多個)和獲取包含結果的列,然後通過替換函數運行每列。 – ADyson

+0

想象一下。我編寫內容並在內容中顯示報價。 該報價已註冊到數據庫中,並且其ID = 112233.因此,我想寫入我的內容,如下所示: 「Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore麥格納aliqua。 * [TTT] 112233 [/ TTT] * UT enim廣告微量veniam, 結果應該與它裏面的完整引用的文本。 我不知道報價前的ID閱讀內容文本。 –

回答

0

這是一個方法來做到這一點。可能不是最高效的,但這是一種方式。它的總部設在preg_replace_callback

$line = preg_replace_callback(
     '|[TTT](\d+)[/TTT]|', 
     function ($matches) use ($dbConnection) { 
      $q = "SELECT textColumn FROM table WHERE id=? LIMIT 1"; 
      $stmt = mysqli_prepare($dbConnection,$q); 
      mysqli_bind_param("i",$matches[1]); 
      mysqli_execute($stmt); 
      mysqli_bind_result($result);    
      mysqli_fetch($stmt); 
      return "[TTT]$result[/TTT]"; 
     }, 
     $line 
    ); 

注意這個假設mysqli但你的方法可能會有所不同。