带有查询数据库

时间:2017-09-25 08:25:54

标签: php preg-replace

我知道&#34; preg_replace&#34;功能但不是如何在其中使用查询。例如,我可以将__转换为<em>

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

我正在寻找更强大的东西。 我想将一些预先格式化的文本(即[TTT]112233[/TTT])替换为另一个文本,这是查询的结果(即echo "$text2";)。

变量$ text2是"SELECT * FROM table WHERE id=112233";

之类的查询的结果

是否有嵌入式php函数可以执行此操作?非常感谢,Fabio

1 个答案:

答案 0 :(得分: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,但您的方法可能有所不同。