自定义模式输出功能

时间:2017-11-13 14:30:06

标签: php

我正在使用一个函数,该函数使用用户在调用函数时设置的自定义输出格式,类似于date()函数。

这个函数调用的数据是从数据库返回的,所以我需要一种方法将用户在模式中使用的字母与表中的键配对,这就是我想出的:

function getUserInfo($id, $pattern = "f, l") {

    //convert single letter format to key used in database
    $keys = ["f", "l", "u", "e"];
    $values = ["name_first", "name_last", "Username", "email"];
    $pattern = str_replace($keys, $values, $pattern);

    $user = [
        "uid" => 1,
        "Username" => "ldavid",
        "name_first" => "Larry",
        "name_last" => "David",
        "email" => "ldavid@example.com",
    ];
    foreach($user as $key => $info) {
        str_replace($key, $info, $pattern);
    }
    return $pattern;
}

这个问题是将单个字母fomrat转换为数据库中使用的密钥。为了解决这个问题,我可以让用户输入数据库中的确切键,但我宁愿它只是一个字母。

在目前的代码中,我总是得到输出namemail_first, namemail_last。我认为问题是,当调用str_replace来转换字母时,单词" name"有一个" e"在其中,因此被"电子邮件"取代。然后,没有任何键与数据库中的键匹配,因此不再进行替换。

我想知道是否有更好的方法来处理这种逻辑,我有点坚持如何解决这个问题。如何正确地将用户提供的单个字母替换为数据库中的密钥?

修改 在评论中,建议使用strstr();这样做,我得到一个错误:

  

警告:strstr():needle不是字符串或整数

$keys = ["f", "l", "u", "e"];
$values = ["name_first", "name_last", "Username", "email"];
$pattern = strstr($pattern, array_combine($keys,$values));

0 个答案:

没有答案