2017-09-25 3 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関数がありますか?多くのありがとう、Fabio

+0

質問の文言は100%明確ではありませんが、クエリを実行し、結果を変数に取得し、行をループします(複数の場合)。結果を含む列を取得してから、各列を置換関数で実行します。 – ADyson

+0

これを想像してください。私はコンテンツを書き、内容の中に引用符を表示したい。 その見積もりはデータベースに登録されており、ID = 112233です。 私はこのような内容のものを書いています: 「私は、私の居場所を知っていますか? doloreマグナaliqua。 * [TTT] 112233 [/ TTT] * ユタenim広告ミニムveniam、 結果は内部の完全な引用とテキストでなければなりません。 私は前に引用のIDを知りません内容のテキストを読む。 –

答えて

0

これはこれを行う方法です。おそらく最も効率的ではありませんが、それは方法です。これはmysqliを前提としていますが、あなたの方法が異なる場合があり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 
    ); 

ノートに基づいています。

関連する問題