我知道" preg_replace"功能但不是如何在其中使用查询。例如,我可以将__
转换为<em>
:
$text = preg_replace('/__(.+?)__/s', '<em>$1</em>', $text);
我正在寻找更强大的东西。
我想将一些预先格式化的文本(即[TTT]112233[/TTT]
)替换为另一个文本,这是查询的结果(即echo "$text2";
)。
变量$ text2是"SELECT * FROM table WHERE id=112233"
;
是否有嵌入式php函数可以执行此操作?非常感谢,Fabio
答案 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
,但您的方法可能有所不同。