Php 用多变量替换多个字符串

Php 用多变量替换多个字符串,php,mysql,Php,Mysql,我想把所有以{开头,以}结尾的字符串都改成一个变量, 例如: 但我使用一个变量Mysql和$array['content']从数据库中获取所有字符串文本 我想要的是: str_replace("{$whatinhere}",$array['$copytohere'],$array['content']); str_replace("{company}",$array['company'],$array['content']); 我想你应该试试这个 $content = $array['co

我想把所有以{开头,以}结尾的字符串都改成一个变量, 例如:

但我使用一个变量Mysql和$array['content']从数据库中获取所有字符串文本

我想要的是:

str_replace("{$whatinhere}",$array['$copytohere'],$array['content']);

str_replace("{company}",$array['company'],$array['content']);


我想你应该试试这个

$content = $array['content'];

$mainContent = str_replace('{username}', $array['username'], $content);

$mainContent = str_replace('{company}', $array['company'], $mainContent);

echo $mainContent;

据我所知,$array变量包含占位符键/值对以及内容。您可以尝试使用以下代码将所有占位符键替换为相应的值:

foreach ($array as $key => $value) {
    if ($key != "content") {
        $array["content"] = str_replace("{" . $key . "}", $value, $array["content"]);
    }
}

/** Print contents */
echo $array["content"];
这是我的全部代码

$sql = mysqli_query($db, "SELECT * FROM templates WHERE id = '$id' LIMIT 1");
$array = mysqli_fetch_array($sql);

echo str_replace({username}",$arraybf['username'],$array['content']);
echo str_replace({company}",$arraybf['company'],$array['content']);

使用preg_replace_回调函数

echo preg_replace_callback('~{(.+?)}~', 
        function($x) use ($array) { return isset($array[$x[1]]) ? $array[$x[1]] : ''; }, 
        $array['content']);

你的问题不是很清楚。我知道你很困惑,但这并不意味着你的问题也必须如此。试着从你的输入和想要的输出的例子开始。告诉我们你为什么需要这种转变。然后告诉我们你试过什么,告诉我们你的问题是什么。我知道,我的英语不好,我有这个文本>-你好{username},你的国家是{Country}。你的年龄是{Age}。你是{gender}-我想把这个{whatishere}改成$array['tohere'];我认为你的英语不是问题所在。试着编辑你的问题。如果你不知道你可能有什么潜在的占位符,那么这不是stru_replace的工作。然后你需要使用正则表达式来进行模式搜索。正如@KIKOSoftware所建议的,编辑你的答案,以获得你的输入,你对该输入做了什么,然后你得到了什么作为输出,以及你期望得到什么作为输出。这当然是一个改进,你正在使用stru替换的结果。它是否真的做了所需要的是值得怀疑的,但它可以。是的,我想要这个,但我可以用一行代码吗?还是不可能?因为名字是一样的,没有区别。我想要100-200个{变化}。这是可能的?所以你可以通过创建所有命名变量的数组来使用循环谢谢,但对我来说不起作用。由于我无法使用循环功能,请使用问题的编辑链接添加其他信息。“发布答案”按钮只能用于完整回答问题。是的,工作正常,谢谢。你救了我,谢谢。
echo preg_replace_callback('~{(.+?)}~', 
        function($x) use ($array) { return isset($array[$x[1]]) ? $array[$x[1]] : ''; }, 
        $array['content']);